!analyze –v [text] 469, 473-478
WinDbg [lab] 21
!dma [text] 497
#ifdef
_M_IX86 [text] 388
_WIN64 [text] 1335
ALLOC_PRAGMA [text] 1533, 1535
DBG [text] 373, 386-983
#include
ntddk.h [text] 394
ntstatus.h [text] 364
stdio.h [text] 403
windows.h [text] 403
#line [text] 392
#pragma
alloc_text [text] 1533, 1534
data_seg [text] 1535
warning [text] 420, 421
%ls
DbgPrint [text] 374
%n
FormatMessage [text] 1065-1068, 1071-1083
%systemroot%
Minidump [text] 472
System32\drivers\drivername [text] 453
&
lea [text] 277
-b
build [text] 509
-c
BUILD [lab] 30
build [text] 509
-e
build [text] 509
-f
build [text] 509
-k
WinDbg [lab] 5
-w
build [text] 509
.asp
illustrated [text] 1036, 1041, 1042
.bin
mc output [text] 1055
.c
compilation [text] 1055
.h
mc output [text] 1055-1057
.inf [text] 1161
driver [text] 1382
Plug-and-Play driver [text] 147
.mc
+1 [text] 1052
adding output [text] 1056, 1057
compilation [text] 1055
custom job step [text] 1072
increment [text] 1052
input [text] 1051
Language [text] 1051
MessageId [text] 1051
output [text] 1058, 1059
Severity [text] 1051
SymbolicName [text] 1051
.mof
compiler [text] 1520
illustrated [text] 1521
mofcomp [text] 1520
MSWmi_MofData_GUID [text] 1520
wmicore.mof [text] 1517
.pnf
driver [text] 1382
.rc
adding [text] 1056, 1057
compilation [text] 1055
SOURCES [text] 986
VERSIONINFO [text] 982
.reboot [text] 464
.reg [text] 451-455, 458
HdwSimDriver.reg [lab] 48
helloworld [lab] 31
legacy driver [text] 147
.reload
WinDbg [lab] 21
/3GB
virtual memory [text] 156
/baudrate
BOOT.INI [lab] 10, 11, [text] 444, 447
/crashdebug
BOOT.INI [text] 444
/debug
BOOT.INI [text] 444
/debugport
BOOT.INI [text] 445
/fastdetect
BOOT.INI [text] 446
/list
PREfast [text] 509
/maxmem
BOOT.INI [text] 445
/noserialmice
BOOT.INI [text] 445
/onecpu
BOOT.INI [text] 446
/sos
BOOT.INI [text] 446, 447
/W4. SOURCES [text] 419
??
object manager name space [text] 315, 317
@InterlockedCompareExchange@12 [text] 290
@InterlockedDecrement@4 [text] 289
@InterlockedIncrement@4 [text] 288
[boot loader]
BOOT.INI [text] 437
[operating systems]
BOOT.INI [text] 438
\
object manager name space [text] 315
__asm [text] 388
__cdecl [text] 271
__DATE__ [text] 390-392
__except [text] 821, 1236-1260
illustrated [text] 1237-1241
__fastcall [text] 271
__FILE__ [text] 390-392
__finally [text] 1247, 1248, 1260-1269
__int64
alignment [text] 1325
__leave [text] 1260-1263
__stdcall [text] 271
example [text] 294-298
__TIME__ [text] 390-392
__TIMESTAMP__ [text] 390-392
__try [text] 1236, 1242-1269
illustrated [text] 1237-1241
MmProbeAndLockPages [text] 821
_M_IX86 [text] 388
_makepath [text] 1046
_NT_DEBUG_BAUD_RATE [lab] 10, 11
_NT_SYMBOL_PATH [lab] 10, 11
_splitpath [text] 1046
_tmakepath_s [text] 1046
_tsplitpath_s [text] 1046
_URB_BUILD_OR_INTERRUPT_TRANSFER [text] 1391
_URB_BULK_OR_INTERRUPT_TRANSFER [text] 1408
_URB_CONTROL_DESCRIPTOR_REQUEST [text] 1392, 1413-1445
_URB_CONTROL_FEATURE_REQUEST [text] 1392, 1417-1424
_URB_CONTROL_GET_CONFIGURATION_REQUEST [text] 1392, 1437
_URB_CONTROL_GET_INTERFACE_REQUEST [text] 1392, 1438
_URB_CONTROL_GET_STATUS_REQUEST [text] 1392, 1425-1428
_URB_CONTROL_TRANSFER [text] 1391, 1407
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1392, 1429-1436
_URB_FRAME_LENGTH_CONTROL [text] 1391, 1402, 1403
_URB_GET_CURRENT_FRAME_NUMBER [text] 1391, 1406
_URB_GET_FRAME_LENGTH [text] 1391, 1404
_URB_HEADER [text] 1391
_URB_ISOCH_TRANSFER [text] 1392, 1409
_URB_PIPE_REQUEST [text] 1391, 1401-1412
_URB_SELECT_CONFIGURATION [text] 1391, 1399
_URB_SELECT_INTERFACE [text] 1391, 1400
_URB_SET_FRAME_LENGTH [text] 1391, 1405
_WRITE_REGISTER_ULONG [text] 294
illustrated [text] 295-298
_WRITE_REGISTER_ULONG@8 [text] 294-298
0x0000001E
KMODE_EXCEPTION_NOT_HANDLED [text] 465-467
0x0000007E
KMODE_EXCEPTION_NOT_HANDLED [text] 465-467
0xC0000005
access violation [text] 468
0xC000001D
illegal instruction [text] 468
0xC0000094
divide by zero [text] 468
0xC00000FD
stack overflow [text] 468
1-byte
FILE_BYTE_ALIGNMENT [text] 343
1sec
IoTimer [text] 936
2-byte
FILE_WORD_ALIGNMENT [text] 343
2GB
virtual memory [text] 156
3GB
/3GB [text] 445
BOOT.INI [text] 445
virtual memory [text] 156
4-byte
FILE_LONG_ALIGNMENT [text] 343
8-bit
ah [text] 263
al [text] 263
bh [text] 263
bl [text] 263
ch [text] 263
cl [text] 263
dh [text] 263
displacement [text] 279
dl [text] 263
r8b..r15b [text] 265
WRITE_REGISTER_UCHAR [text] 293
8-byte
FILE_QUAD_ALIGNMENT [text] 343
8TB
virtual memory [text] 158, 1323
10Mb/sec
USB [text] 1349
10ms
tick [text] 937
15ms
tick [text] 937
16-bit
ax [text] 263
bx [text] 263
cx [text] 263
di [text] 263
dx [text] 263
HALF_PTR [text] 1328
NTVDM [text] 260
PCMCIA [text] 1501
r8w..r15w [text] 265
si [text] 263
UHALF_PTR [text] 1328
virtual MS-DOS [text] 260
WRITE_REGISTER_USHORT [text] 293
16-byte
FILE_OCTA_ALIGNMENT [text] 343
32-bit
CardBus [text] 1501
data registers [text] 262
displacement [text] 279
DMA [text] 1324
Dma32BitAddresses [text] 855
drivers [text] 260
DWORD32 [text] 1327
DWORD_PTR [text] 1328
eax [text] 262
ebp [text] 266
ebx [text] 262
ecx [text] 262
edi [text] 262
edx [text] 262
eflags [text] 266
eip [text] 266
esi [text] 262
esp [text] 266
HALF_PTR [text] 1328
history [text] 260
int [text] 1324
INT32 [text] 1327
INT_PTR [text] 1328
IoIs32bitProcess [text] 1336, 1337, 1339, 1340
long [text] 1324
LONG_PTR [text] 1328
memory map [text] 165
pointer [text] 1324
POINTER_32 [text] 1329
r8d..r15d [text] 265
REG_DWORD [text] 145, 1092
SIZE_T [text] 1328
SSIZE_T [text] 1328
system DMA addresses [text] 215
thunking [text] 1333, 1334, 1338-1340
UHALF_PTR [text] 1328
UINT32 [text] 1327
UINT_PTR [text] 1328
ULONG32 [text] 1327
ULONG_PTR [text] 1328
virtual memory [text] 156, 157
Win64 address space [text] 157
WRITE_REGISTER_ULONG [text] 292-294
illustrated [text] 295-298
32-byte
FILE_32_BYTE_ALIGNMENT [text] 343
50us
KeStallExecutionProcessor [text] 924
64-bit
alignment [text] 1325
Dma64BitAddresses [text] 855
drivers [text] 260
DWORD64 [text] 1327
DWORD_PTR [text] 1328
edx:eax [text] 262
history [text] 260
INT64 [text] 1327
INT_PTR [text] 1328
IoIs32bitProcess [text] 1336, 1339, 1340
LONG_PTR [text] 1328
memory map [text] 165
pointer [text] 1324
POINTER_64 [text] 1329
r8..r15 [text] 265
rax [text] 264
rbp [text] 266
rbx [text] 264
rcx [text] 264
rdi [text] 264
rdx [text] 264
rflags [text] 266
rip [text] 266
rsi [text] 264
rsp [text] 266
SIZE_T [text] 1328
SSIZE_T [text] 1328
thunking [text] 1333-1335, 1339, 1340
UINT64 [text] 1327
UINT_PTR [text] 1328
ULONG64 [text] 1327
ULONG_PTR [text] 1328
virtual memory [text] 158
64-byte
FILE_64_BYTE_ALIGNMENT [text] 343
64K
guard pages [text] 156-158
minidump [text] 472
100Kb/sec
USB [text] 1349
128-byte
FILE_128_BYTE_ALIGNMENT [text] 343
480Mb/sec
USB [text] 1349
512-byte
FILE_512_BYTE_ALIGNMENT [text] 343
640bit
thunking [text] 1338
1394
bus analyzer [text] 961, 962
debugging [text] 973
debugging port [text] 483
Driver [text] 98
2048u..4095u [text] 652, 653
32768u..65535u [text] 652, 653
80486 System Architecture [text] 1625
AbnormalTermination [text] 1247, 1248, 1267-1269
Access violation [text] 468
ActiveX [text] 141
Adapter object
AdapterControl handler [text] 1547, 1548
IoAllocateAdapterChannel [text] 1544
IoFreeAdapterChannel [text] 1549
NT4 [text] 1542
ADAPTER_OBJECT [text] 702, 719-1545
illustrated [text] 810, 811
IoAllocateAdapterChannel [text] 1545
illustrated [text] 1555, 1561
IoFlushAdapterBuffers
illustrated [text] 1559
IoFreeAdapterChannel
illustrated [text] 1559, 1560
IoMapTransfer [text] 1550, 1551
illustrated [text] 1556
AdapterControl handler [text] 1547, 1548
adc
lock [text] 287
add
lock [text] 287
AddDevice [text] 174, 312-1185
DRIVER_OBJECT
.DriverExtension [text] 332
example [text] 327
extension [text] 1174
example [text] 1177, 1179
PADDDEVICE [text] 332
Address calculation [text] 279
Address modes [text] 278
Addresses [text] 191
Addressing
direct [text] 280
immediate [text] 280
indexed [text] 280
scaled [text] 280
Advanced
settings [lab] 12
Affinity
processor [text] 759
Afx
name derivation [text] 1281
AGP System Architecture [text] 1625
Alertable wait state [text] 57, 72-927
Alignment
allocation [text] 908
DEVICE_OBJECT.AlignmentRequirement [text] 342, 343
FILE_128_BYTE_ALIGNMENT [text] 343
FILE_32_BYTE_ALIGNMENT [text] 343
FILE_512_BYTE_ALIGNMENT [text] 343
FILE_64_BYTE_ALIGNMENT [text] 343
FILE_BYTE_ALIGNMENT [text] 343
FILE_LONG_ALIGNMENT [text] 343
FILE_OCTA_ALIGNMENT [text] 343
FILE_QUAD_ALIGNMENT [text] 343
FILE_WORD_ALIGNMENT [text] 343
GetDmaAlignment [text] 871, 873
STATUS_DATATYPE_MISALIGNMENT [text] 1251
UNALIGNED [text] 1325
All [text] 191, 1184-1217
ALLOC_PRAGMA [text] 1533-1535
alloc_text
#pragma [text] 1533, 1534
AllocateAdapterChannel
DMA_OPERATIONS [text] 871, 872, 875, 876
illustrated [text] 890, 896
AllocateCommonBUffer
DMA_OPERATIONS [text] 871, 872
AllocatedResources [text] 1198
AllocatedResourcesTranslated [text] 761, 1198
Allocation
alignment [text] 908
ExAllocateFromNPagedLookasideList [text] 917
ExAllocatePool [text] 907
example [text] 572
ExAllocatePoolWithTag [text] 911
ExDeleteNPagedLookasideList [text] 919
ExFreePool [text] 574, 913
example [text] 585
ExFreePoolWithTag [text] 913
ExFreeToNPagedLookasideList [text] 918
ExInitializeNPagedLookasideList [text] 915
lookaside list [text] 914, 915
must-succeed [text] 912
non-paged pool [text] 907, 909
paged pool [text] 907, 909
POOL_RAISE_IF_ALLOCATION_FAILURE [text] 916
tagged [text] 910
Alpha [text] 191
Always interruptible [text] 34
Always preemptible [text] 34
AMD64 [text] 26
history [text] 260
LFENCE [text] 304
MFENCE [text] 304
SFENCE [text] 304
analyze –v [text] 469, 473-478
And [text] 191, 1184-1217
and
lock [text] 287
Anderson, Don [text] 1625
ANSI [text] 324
APC
priority [text] 177, 178
API
design [text] 546-548
Application
event log [text] 1033
Application space
accessing [text] 630
AppWizard [text] 1284, 1285
illustrated [text] 1290-1296
Architecture
multiprocessor [text] 219, 220
NT [text] 153
PC [text] 190
PCI [text] 190
register [text] 261
RISC [text] 192
x86 [text] 187-189
Are [text] 191
ASSERT [text] 384, 385
kernel spew [text] 371
ASSERTMSG [text] 384, 385
Associated IRP [text] 1104
AssociatedIrp [text] 685
completing [text] 1127
IoMakeAssociatedIrp [text] 1111
IRP.AssociatedIrp [text] 1124
MasterIrp [text] 685
Asynchronous
APC [text] 177, 178
Asynchronous I/O
alertable wait state [text] 57
callback [text] 55, 57-72
CancelIo [text] 61, 62
CancelIoEx [text] 61, 62
completion notification [text] 55
ConnectNamedPipe [text] 79
DeviceIoControl [text] 79
DeviceIoControlEx [text] 48, 57-72
event wait [text] 55, 56
FILE_FLAG_OVERLAPPED [text] 53, 54, 69
GetOverlappedResult [text] 71
GetQueuedCompletionStatus [text] 71, 78-80
I/O Completion Port [text] 58, 74, 75
I/O Completion port [text] 55
I/O Manager [text] 170
LockFileEx [text] 79
OVERLAPPED [text] 70, 71
performance [text] 94
PostQueuedCompletionStatus [text] 81
ReadDirectoryChangesW [text] 79
ReadFile [text] 79, 94
ReadFileEx [text] 48, 57-72
separate thread [text] 55, 59-92
SetFilePointer irrelevant [text] 83
SleepEx [text] 73
TransactNamedPipe [text] 79
WaitCommEvent [text] 79
WaitForMultipleObjectsEx [text] 73
WaitForSingleObjectEx [text] 73
WriteFile [text] 79
WriteFileEx [text] 48, 57-72
Attach [text] 1185
Auto-loading driver [lab] 8
Background
priority [text] 177, 178
Backtrace
stack [text] 477
Bad design [text] 218, 956-977
Bandwidth [text] 195
illustrated [text] 196, 197
Base register [text] 279
BaseAddress
I/O port [text] 1584
memory [text] 1583
PCI_COMMON_CONFIG [text] 1598
BaseClass
PCI_COMMON_CONFIG [text] 1596, 1600
Baud rate [lab] 15, 31
Baudrate
_NT_DEBUG_BAUD_RATE [lab] 10, 11
baudrate
BOOT.INI [text] 444, 447
BIST [text] 1581
PCI [text] 967, 1572
PCI_COMMON_CONFIG [text] 1598, 1600
Blue screen
access violation [text] 468
divide by zero [text] 468
Blue Screen Of Death
NT4 [text] 465
XP [text] 466
Bluescreen
stop code [text] 465-467
Book
8046System Architecture [text] 1625
AGP System Architecture [text] 1625
Cardbus System Architecture [text] 1625
Developing Windows NT Device Drivers [text] 3, 1624
Firewire System Architecture [text] 1625
ISA System Architecture [text] 1625
PCI System Architecture [text] 1625
PCI-X System Architecture [text] 1625
Pentium Pro and Pentium II System Architecture [text] 1625
Pentium Pro Processor System Architecture [text] 1625
Pentium Processor System Architecture [text] 1625
Programming the Windows Driver Model [text] 1624
The Unabridged Pentium 4 [text] 1625
Win32 Programming [text] 3, 1624
Windows NT Driver Development [text] 1624
Windows NT File System Interals [text] 1624
Windows NT/2000 Native API Reference [text] 1624
boot loader
BOOT.INI [text] 437
BOOT.INI [lab] 31
/3GB [text] 445
/baudrate [text] 447
/debugport [text] 445
/fastdetect [text] 446
/maxmem [text] 445
/noserialmice [text] 445
/onecpu [text] 446
/sos [text] 446, 447
[boot loader] [text] 437
[operating systems] [text] 438
default= [text] 437
description [text] 435, 443
directory [text] 442
disk(n) [text] 440, 447
multi(n) [text] 439, 447
options [text] 437-446
partition(n) [text] 441, 447
rdisk(n) [text] 440
read-only attribute [text] 436
scsi(n) [text] 439
timeout= [text] 437
Vista (gone!) [text] 431
Break (debug) [lab] 15
BreakOnEntry [lab] 35, [text] 457
HKLM\...\drivername\Parameters [text] 452
Breakpoint [text] 277
DbgBreakpoint [text] 386
F9 [lab] 21
toggle [lab] 21
BRKPNT [text] 387, 388
BSOD
NT4 [text] 465
XP [text] 466
btc
lock [text] 287
btr
lock [text] 287
bts
lock [text] 287
Bucket
crash [text] 475
Buffered I/O [text] 630, 632, 633
DeviceIoControl [text] 631, 649, 650
illustrated [text] 654-657
DeviceIoControlEx [text] 631, 649, 650
illustrated [text] 654-657
DO_BUFFERED_IO [text] 343
IRP.AssociatedIrp.SystemBuffer [text] 685, 686
METHOD_BUFFERED [text] 652, 653
ReadFile [text] 631, 634-638
illustrated [text] 639-642
ReadFileEx [text] 631, 634-638
illustrated [text] 639-642
WriteFile [text] 631, 635-644
illustrated [text] 645-648
WriteFileEx [text] 631, 635-644
illustrated [text] 645-648
BUILD [text] 409, 415
-b [text] 509
-e [text] 509
-f [text] 509
-w [text] 509
buildchk.log [lab] 16
environments [text] 408
error [text] 418
full build [text] 416
NT4 [text] 412
null build [text] 417
screen buffer size [lab] 17-19
tree [text] 412-414
XP+ [text] 413
Build environment
checked [text] 408
free [text] 408
buildchk.log [lab] 16
Bulk transfer [text] 1352, 1355
BulkUsb driver [text] 1448, 1449
BULKUSB_MAX_TRANSFER_SIZE [text] 1447
Bullseye coverate [text] 521
Burst mode DMA [text] 213
Bus [text] 246
driver [text] 136
HAL [text] 243
EISA [text] 245
external [text] 194
HAL [text] 243
I/O [text] 187
illustrated [text] 188
internal [text] 194
ISA [text] 245
memory
illustrated [text] 188
number [text] 759, 763
PCI [text] 245
PCMCIA [text] 245
Bus analyzer [text] 958, 961, 962
Bus driver [text] 98
Bus master DMA [text] 209, 213-854
illustrated [text] 833-839
BYTE
FILE_BYTE_ALIGNMENT [text] 343
ByteOffset
IO_STACK_LOCATION.Parameters.Read [text] 693
IO_STACK_LOCATION.Parameters.Write [text] 694
C++
exceptions (forbidden) [text] 1270
not used for most drivers [text] 5
C2
security [text] 16
c:\Labs [lab] 23
Cable
length (USB) [text] 1383, 1384
Cache
clean line [text] 223, 224, 233-235
consistency [text] 221, 226-236
DMA [text] 897, 898, 900-1566
illustrated [text] 899, 1564
flush [text] 230, 241
HAL [text] 241
invalid line [text] 223, 236
KeFlushIoBuffers [text] 897, 898, 900-1565
illustrated [text] 899, 1564
L1 [text] 229, 231
illustrated [text] 221, 226-236
L2 [text] 229, 231
illustrated [text] 190, 221-236
line [text] 223
modified line [text] 223, 224, 228-232
NonPagedPoolCacheAligned [text] 907
PagedPoolCacheAlligned [text] 907
portability [text] 42
replacement algorithm [text] 223
shared line [text] 223-225, 234, 235
snooping [text] 231, 232
write-back [text] 222, 231
write-through [text] 222, 231
CacheLineSize
PCI_COMMON_CONFIG [text] 1597, 1600
call [text] 268
Call Usage Verifier [text] 517, 518
Call usage verifier [text] 515, 516
VERIFIER_DDK_EXTENSIONS [text] 515
Calling convention
__cdecl [text] 271
__stdcall [text] 271
Calling convetion
__fastcall [text] 271
CallUSBD [text] 1441, 1445
defined [text] 1442
Cancel [text] 736-738
cancel-safe queue [text] 723
handler [text] 308, 739-743
IoReleaseCancelSpinLock [text] 745, 746
IoSetCancelRoutine [text] 742
IRP [text] 740, 749
IRP.Cancel [text] 685, 740
IRP.CancelIrql [text] 740
IRP.CancelIrqp [text] 685
IRP.CancelRoutine [text] 685, 740
KeRemoveEntryDeviceQueue [text] 746
PDRIVER_CANCEL [text] 742, 743
spin lock [text] 741, 742, 747, 748
StartIo [text] 744
STATUS_CANCELLED [text] 746, 1621, 1622
Cancel-safe queue [text] 723, 1607-1619
canceling [text] 1621, 1622
inserting [text] 1613
IO_CSQ [text] 1608, 1614, 1615
IoCsqInitialize [text] 1610, 1611, 1620
IoCsqInsertIrp [text] 1607, 1608
IoCsqRemoveIrp [text] 1607
IoCsqRemoveNextIrp [text] 1607, 1608
locking [text] 1612
peeking [text] 1615-1618
removing [text] 1614
CancelIo [text] 61, 62, 338-737
CancelIoEx [text] 61, 62, 338-737
CancelIrql
IRP [text] 685, 740
CancelRoutine
IRP [text] 740
CancelSynchronousIo [text] 61, 62, 338-737
Canonical order [text] 616, 617
CardBus [text] 1499-1501
tool [text] 1504
WDM [text] 1147
Cardbus System Architecture [text] 1625
CButton [text] 1283
CD
driver [text] 113
CDB
debugger [text] 434
CDFS [text] 125
illustrated [text] 123, 124
CDialog
MFC [text] 1283
CF [text] 274-276
CFrameWNd [text] 1283
CHAR [text] 324
Checked Build
driver [text] 372
kernel [text] 370
Checked build [lab] 30
DBG [text] 373
CIS [text] 1502, 1503
PCI_COMMON_CONFIG [text] 1598
PCMCIA enumeration [text] 1505
tool [text] 1504
Class driver [text] 1151
USB [text] 1154
WDM [text] 1154
ClassWizard [text] 1289, 1302, 1303
illustrated [text] 1304-1314, 1317
cld [text] 277
Clear [text] 1185
CLIENT_64BIT [text] 1335
CloseHandle [text] 48, 49, 62-549
example [text] 404
handler [text] 322
IRP_MJ_CLEANUP [text] 65, 321-338
IRP_MJ_CLOSE [text] 65, 321-338
Closely-coupled MIMD [text] 26
CM_RESOURCE_LIST [text] 1198
cmpxchg [text] 291
lock [text] 287, 290
Code coverage [text] 520, 522, 523
www.bullseye.com [text] 521
Coherency
cache [text] 221, 226-236
Colwell, Bob [text] 1625
COM [text] 141
COM port [lab] 31
COMMAND
GO
input [lab] 62, 62-75
output [lab] 65, 66, 75
IACK
input [lab] 62
output [lab] 65
IE
input [lab] 62
output [lab] 65
input [lab] 60
output [lab] 60
RESET
output [lab] 65, 67
Command
input [lab] 62
PCI_COMMON_CONFIG [text] 1598, 1600
Command line
parameters [text] 1069, 1070
Command shell
screen buffer size [lab] 17-19
Command window
build environments [text] 408
comp.os.ms-windows.programmer.nt.kernel-mode [text] 1626
Compiler
C/C++ [text] 1055
message [text] 1055
resource [text] 1055
Compiler optimizing [text] 619-623
Compiler option
/W4 [text] 419
Complete IRP [lab] 44, 66-75
Completion routine [text] 753, 1103-1134
illustrated [text] 1136-1139
IoAllocateIrp [text] 1109
IoBuildDeviceIoControlRequest [text] 1109
IoSetCompletionRoutine [text] 1107, 1129-1196
example [text] 1225
order [text] 1131
PNP [text] 1199-1201
power [text] 1227-1230
STATUS_MORE_PROCESSING_REQUIRED [text] 1132, 1135-1139
STATUS_SUCCESS [text] 1135
USB [text] 1447
Condition codes [text] 274-276
Configuration
_URB_CONTROL_GET_CONFIGURATION_REQUEST [text] 1392, 1437
_URB_SELECT_CONFIGURATION [text] 1399
descriptor (USB) [text] 1365, 1369, 1370
HID [text] 1462, 1464
URB_FUNCTION_GET_CONFIGURATION [text] 1437
URB_FUNCTION_SELECT_CONFIGURATION [text] 1399
USB [text] 1363
ConnectNamedPipe [text] 79
const [text] 624
CONTAINING_RECORD [text] 727, 1612-1617
illustrated [text] 726, 732
Control panel [lab] 12
Control transfer [text] 1352, 1353
_URB_CONTROL_TRANSFER [text] 1407
URB_FUNCTION_CONTROL_TRANSFER [text] 1407
Controller object [text] 787, 788
IoAllocateController [text] 788, 790
IoCreateController [text] 788, 789
IoFreeController [text] 792, 795
CONTROLLER_OBJECT [text] 702, 720
.ControllerExtension [text] 788
IoAllocateController [text] 790
IoCreateController [text] 789
IoFreeController [text] 792, 795
Controls
MFC [text] 1297-1300
Copyright [text] 191, 1184-1217
Count [text] 1184
Crash bucket [text] 475
Crash dump [text] 470
full memory [text] 472
kernel memory [text] 472
minidump [text] 472
selecting [text] 471
crashdebug
BOOT.INI [text] 444
Create
IO_STACK_LOCATION
.Parameters [text] 692
CreateFile [text] 48, 49, 62
AUX [text] 318
COMn [text] 318
example [text] 403
File Object [text] 565
FILE_OBJECT.FileName [text] 567
handler [text] 322
INVALID_HANDLE_VALUE
example [text] 404
IO_STACK_LOCATION
.Parameters
.Create [text] 692
IRP_MJ_CREATE [text] 65, 338
Lab2 [lab] 58
LPTn [text] 318
NUL [text] 318
parameters [text] 50-53
PRN [text] 318
processing [text] 105
single [text] 549
CreateIoCompletionPort [text] 76, 77
CriticalWorkQueue [text] 995
CS [text] 279
CScrollView [text] 1283
csq.lib [text] 1608
CSRSS [text] 24
CTL_CODE [text] 651, 652
FILE_ANY_ACCESS [text] 652, 653
FILE_READ_ACCESS [text] 652, 653
FILE_WRITE_ACCESS [text] 652, 653
illustrated [text] 653
IOCTL_LAB_HELLO_READ [lab] 56
IOCTL_LAB_HELLO_WRITE [lab] 56
IOCTL_LAB_INITIALIZE [lab] 56
METHOD_BUFFERED [text] 652, 653
METHOD_IN_DIRECT [text] 652, 653
METHOD_NEITHER [text] 652, 653
Ctrl+break [lab] 15
CurrentIrp [text] 706
Custom job step [text] 1072
CustomTimerDPC [text] 928
CView
MFC [text] 1283
D0, on [text] 1165
PowerDevice0
example [text] 1224
required [text] 1166
D1, sleep [text] 1165
optional [text] 1166
D2, deep sleep [text] 1165
optional [text] 1166
D3, off [text] 1165
required [text] 1166
DATA
input [lab] 60, 75
output [lab] 60, 66-75
Data Center Edition
limitations [text] 26
DATA register [lab] 43, 44
data_seg
#pragma [text] 1535
DBG
.rc [text] 983
ASSERT [text] 384
ASSERTMSG [text] 384
preprocessor symbol [text] 373
using [text] 386, 388
DbgBreakPoint [text] 386
conditional [text] 387, 388
DbgPrint [text] 374
%ls [text] 374
buffer limit [text] 382
example [text] 390-392, 570-580
DbgPrintEx [text] 375
%ls [text] 374
buffer limit [text] 382
ComponentId [text] 376
DPFLTR_ERROR_LEVEL [text] 381
DPFLTR_INFO_LEVEL [text] 381
DPFLTR_MASK [text] 381
DPFLTR_TRACE_LEVEL [text] 381
DPFLTR_WARNING_LEVEL [text] 381
HKLM\...\Debug Print Filter [text] 378
Kd_IHVAUDIO_Mask [text] 378
Kd_IHVVIDEO_Mask [text] 378
Level [text] 377, 379
system mask [text] 380
DDK
documentation [lab] 25
Deadlock [text] 614-616
avoidance [text] 616
detection [text] 498, 618
mutex [text] 1014
Deadlock detection
fast mutex [text] 498
mutex [text] 498
spin lock [text] 498
DeallocateObject [text] 791, 793-795
DeallocateObjectKeepRegisters [text] 878-880, 1546-1548
debug
BOOT.INI [text] 444
Debug Build
driver [text] 372
kernel [text] 370
DebugBreak [lab] 35
Debugger
CDB [text] 434
failures [text] 955
NTSD [text] 434
WinDbg [text] 433
Debugging
1394 [text] 973
ASSERT [text] 384, 385
ASSERTMSG [text] 384, 385
BRKPNT [text] 387, 388
configuration [text] 428
DBG [text] 373
DbgBreakpoint [text] 386
DbgPrint [text] 374
DbgPrintEx [text] 375
Firewire [text] 973
hardware [text] 969-971
KdPrint [text] 374
KdPrintEx [text] 375
layered driver [text] 972
remote [text] 425-427
techniques [text] 970, 971
USB [text] 973
DebugMask [text] 457
HKLM\...\drivername\Parameters [text] 452
debugport
BOOT.INI [text] 445
DebugPrint
WPP [text] 526
dec [text] 289
lock [text] 287
default=
BOOT.INI [text] 437
Defensive code [text] 968
Deferred Procedure Call
see DPC [text] 773
Dekker [text] 191, 1184-1217
Dekker, Edward N. [text] 2, 3, 1624
dekker@eclectic-eng.com [text] 2
DelayedWorkQueue [text] 995
DEPRECATE_DDK_FUNCTIONS
SOURCES [text] 513
Deprecated functions [text] 511-513
DeregisterEventSource [text] 1043
Descriptor
_URB_CONTROL_DESCRIPTOR_REQUEST [text] 1392, 1413-1445
Configuration [text] 1364, 1365, 1369, 1370
Device [text] 1364-1368
Device_Qualifier [text] 1364, 1365, 1378
Endpoint [text] 1364, 1365, 1373-1375
HID [text] 1462
Interface [text] 1364, 1365, 1371, 1372
Interface_Power [text] 1364, 1365, 1380
Other_Speed_Configuration [text] 1364, 1365, 1379-1478
String [text] 1364, 1365, 1376, 1377
URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE [text] 1413
URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT [text] 1414
URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE [text] 1415
URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT [text] 1416
USB [text] 1363-1380
UsbBuildGetDescriptorRequest [text] 1445
Developing Windows NT Device Drivers [text] 3, 1624
Device [text] 1185
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1429, 1433
descriptor (USB) [text] 1365-1368
name
persistence [text] 554
object manager name space [text] 315
simple [text] 636
URB_FUNCTION_CLASS_DEVICE [text] 1433
URB_FUNCTION_VENDOR_DEVICE [text] 1429
Device driver [text] 169
defined [text] 16
Device extension [text] 308, 345, 346
illustrated [text] 311, 312, 347-352
Device name [text] 548
Device Object [text] 173
Device object [text] 174
IO_STACK_LOCATION.DeviceObject [text] 691
IoCreateDevice [text] 348-350
Device states [text] 1178
DEVICE_DESCRIPTION [text] 857
.BusNumber [text] 855
.Dma32BitAddresses [text] 855
.Dma64BitAddresses [text] 855
.InterfaceType [text] 856
.Master [text] 854
.MaximumLength [text] 856
.ScatterGather [text] 854
.Version [text] 854
structure [text] 853
DEVICE_OBJECT [text] 308, 341
.AlignmentRequirement [text] 342, 343
.Characteristics [text] 342
.CurrentIrp [text] 342, 706
.DeviceExtension [text] 342
.DeviceType [text] 342, 343
.DriverObject [text] 342
.Flags [text] 342, 343
DO_BUFFERED_IO [text] 634, 635
DO_DIRECT_IO [text] 658
.NextDevice [text] 342
example [text] 326, 395
illustrated [text] 311, 312, 342-352
IoCreateDevice [text] 348-350
Device_Qualifier
descriptor [text] 1477
descriptor (USB) [text] 1365, 1378
HID [text] 1477
DEVICE_TYPE [text] 342
DeviceID
PCI_COMMON_CONFIG [text] 1596, 1600
DeviceIoControl [text] 48, 61-68
buffered [text] 649, 650
illustrated [text] 654-657
CTL_CODE [text] 651, 652
illustrated [text] 653
desgin [text] 551
direct [text] 660
DMA [text] 865
handler [text] 322
I/O Completion Port [text] 79
IO_STACK_LOCATION
.Parameters [text] 695
.DeviceIoControl [text] 695
IOCTL_LAB_INITIALIZE [lab] 59
IRP_MJ_DEVICE_CONTROL [text] 65, 338
Lab2 [lab] 45, 52, 53
IOCTL_HELLO_INITIALIZE [lab] 45
IOCTL_HELLO_READ [lab] 45
IOCTL_HELLO_WRITE [lab] 45
Neither I/O [text] 672
DeviceIoControlEx [text] 48, 57-72
buffered [text] 649, 650
illustrated [text] 654-657
CTL_CODE [text] 651, 652
illustrated [text] 653
direct [text] 660
handler [text] 322
IRP_MJ_DEVICE_CONTROL [text] 65, 338
Neither I/O [text] 672
DeviceNumber
PCI_SLOT_NUMBER [text] 1595
DeviceObject [text] 1217
DevicePowerState [text] 1229
DeviceQueueEntry
IRP [text] 685
Diagnostics [text] 958, 967
Dialog-based [text] 1285
Direct addressing [text] 280
Direct I/O [text] 630, 632-819
DeviceIoControl [text] 660
DeviceIoControlEx [text] 660
DO_DIRECT_IO [text] 343, 658
MDL [text] 659
METHOD_IN_DIRECT [text] 652, 653, 660
METHOD_OUT_DIRECT [text] 652, 653, 660
ReadFile [text] 658
ReadFileEx [text] 658
WriteFile [text] 658, 661-663
illustrated [text] 664-669
WriteFileEx [text] 658, 661-663
illustrated [text] 664-669
Direct Memory Access
see DMA [text] 209, 830
directory
BOOT.INI [text] 442
DirectX [text] 1321
HID [text] 1495
DIRQL [text] 613
ISR [text] 181
KeSynchronizeExecution [text] 492, 599-781
illustrated [text] 891, 891-1561
priority [text] 177-179
DIRS [text] 409
Disassembly [text] 280, 281
disk(n)
BOOT.INI [text] 440, 447
DISPATCH
priority [text] 177, 178
Dispatch handler [text] 308, 322-353
process map [text] 166, 167
DISPATCH_LEVEL [text] 182, 613
IRQL checking [text] 492
KeAcquireInStackQueuedSpinLockAtDpcLevel [text] 603
KeAcquireSpinLockAtDpcLevel [text] 601
KeReleaseInStackQueuedSpinLockAtDpcLevel [text] 603
KeReleaseSpinLockAtDpcLevel [text] 601
spin lock [text] 599
Displacement [text] 279
Display
driver [text] 117-119
illustrated [text] 116, 120
hardware
illustrated [text] 120
miniport [text] 119
illustrated [text] 116
DisplayName
HKLM\...\Services\diivername [text] 452
Registry [text] 453, 454
Divide by zero [text] 468
DMA [text] 209, 851, 852
!dma [text] 497
32-bit [text] 1324
ADAPTER_OBJECT
IoAllocateAdapterChannel [text] 1545
IoMapTransfer [text] 1550, 1551
ADAPTER_OBJECT.AllocateAdapterChannel
illustrated [text] 1555
burst mode [text] 213
Bus master [text] 831, 832
illustrated [text] 833-839
bus master [text] 212, 213, 216-854
cache [text] 897, 898, 900-1566
illustrated [text] 899, 1564
CardBus [text] 1499
copy made [text] 860
defined [text] 830
DeviceIoControl [text] 865
DMA32BitAddresses [text] 855
DMA64BitAddresses [text] 855
DMA_OPERATIONS.AllocateAdapterChannel [text] 871, 872, 875, 876
illustrated [text] 890
DMA_OPERATIONS.AllocateCommonBuffer [text] 871, 872
DMA_OPERATIONS.FlushAdapterBuffers [text] 871, 872
DMA_OPERATIONS.FreeAdapterChannel [text] 871, 872, 881
DMA_OPERATIONS.FreeCommonBuffer [text] 871, 872
DMA_OPERATIONS.FreeMapRegisters [text] 871, 873
DMA_OPERATIONS.GetDmaAlignment [text] 871, 873
DMA_OPERATIONS.GetScatterGatherList [text] 871, 873-885
DMA_OPERATIONS.MapTransfer [text] 871, 873-883
DMA_OPERATIONS.PutDmaAdapter [text] 871, 872
DMA_OPERATIONS.PutScatterGatherList [text] 871, 873-886
DMA_OPERATIONS.ReadDmaCount [text] 871, 873
DMA_OPERATIONS.Size [text] 871, 872
example [text] 887, 1552
GetDmaAdapter [text] 874
HAL [text] 241
illustrated [text] 810, 811
IoGetDmaAdapter [text] 877
map registers [text] 849
partial MDL [text] 822
PCMCIA [text] 1499
physical address [text] 832
scatter-gather [text] 860
system [text] 214, 216-841
illustrated [text] 842-848
verification [text] 496
video miniport [text] 1321
DMA_ADAPTER object [text] 868, 869, 876
.PutDmaAdapter [text] 871
DMA_OPERATIONS [text] 870
GetDmaAdapter [text] 874
IoGetDmaAdapter [text] 877
PutDmaAdapter [text] 872
DMA_OPERATIONS [text] 870
.AllocateAdapterChannel [text] 871, 872, 875, 876
illustrated [text] 890, 896
.AllocateCommonBuffer [text] 871, 872
.FlushAdapterBuffers [text] 871, 872, 898-901
illustrated [text] 894-896, 899
.FreeAdapterChannel [text] 871, 872, 881
illustrated [text] 894-896
.FreeCommonBuffer [text] 871, 872
.FreeMapRegisters [text] 871, 873
.GetScatterGatherList [text] 882, 884, 885
.MapTransfer [text] 882, 883
illustrated [text] 891
.PutDmaAdapter [text] 871, 872
.PutScatterGatherList [text] 884, 886
.Size [text] 871, 872
DO_BUFFERED_IO [text] 343, 634, 635
DO_DEVICE_INITIALIZING [text] 1185, 1185
DO_DIRECT_IO [text] 343, 658
Documentation
DDK [lab] 25
MSDN [lab] 25
simulator [lab] 25
WinDbg [lab] 25
DONE [lab] 42-44, 44
input [lab] 61, 63
output [lab] 66
DosDevices
object manager name space [text] 315
Downward [text] 1217
DPC [text] 173, 174, 182-773
context [text] 630, 776
DISPATCH_LEVEL [text] 182
FMS
illustrated [text] 784
FSM [text] 783
handler [text] 777
illustrated [text] 340, 683-784
IoInitializeDpcRequest [text] 774
IoRequestDPC
illustrated [text] 893, 1558
IoRequestDpc [text] 613, 771-781
KeAcquireInStackQueuedSpinLockAtDpcLevel [text] 603
KeAcquireSpinLockAtDpcLevel [text] 601
KeInitializeDpc [text] 941
Lab4 [lab] 80
KeInitializeTimerEx [text] 942
KeInititalizeTimer [text] 941
KeReleaseInStackQueuedSpinLockAtDpcLevel [text] 603
KeReleaseSpinLockAtDpcLevel [text] 601
MDL [text] 799
object
illustrated [text] 778
PIO_DPC_ROUTINE [text] 774, 777
priority [text] 177, 178
process context [text] 182
process map [text] 166, 167
processing [text] 782
timer [text] 173, 174, 928-938
unbounded [text] 43
DPFLTR_*
DebugPrintEx [text] 381
DPFLTR_IHVAUDIO_ID [text] 376
DPFLTR_IHVBUS_ID [text] 376
DPFLTR_IHVDRIVER_ID [text] 376
DPFLTR_IHVNETWORK_ID [text] 376
DPFLTR_IHVSTREAMING_ID [text] 376
DPFLTR_IHVVIDEO_ID [text] 376
Driver
1394 [text] 98
auto-loading [lab] 8
bus [text] 98, 136
CD [text] 113
class [text] 1151
disk [text] 113
display [text] 117-119
illustrated [text] 116, 120
file system [text] 98, 104, 105
filter [text] 98, 1113-1115
Firewire [text] 98
floppy [text] 113
good design [text] 976
graphics [text] 98, 115-122
illustrated [text] 116, 120, 121
illustrated [text] 173, 174
intermediate-level [text] 99, 130-132
keyboard [text] 113
layered [text] 129, 172
low-level [text] 99, 130-132
minidriver [text] 1151
miniport [text] 99-102, 132
illustrated [text] 103
monolithic [text] 131, 132, 172
mouse [text] 113
NDIS [text] 109
illustrated [text] 110-112
network [text] 109
illustrated [text] 110-112
port [text] 99-102
illustrated [text] 103
printer [text] 122
illustrated [text] 121
robust [text] 976
SCSI [text] 125, 126
illustrated [text] 123, 124
serial port [text] 113, 114
signed [text] 1342-1345
streaming [text] 133, 135
illustrated [text] 134
subsystem [text] 98
taxonomy [text] 132
top-level [text] 99, 130-132
USB [text] 98
Driver object [text] 173, 174, 323
extension
.AddDevice [text] 1174
Driver thread [text] 990
floppy example [text] 1022-1025
Driver verifier [text] 487-489
automatic checks [text] 490
create settings [text] 500
deadlock detection [text] 498, 618
disabling [text] 505
DMA verification [text] 496
Forcing IRQL checking [text] 492
I/O verificaiton [text] 495
low resource simulation [text] 493
memory pool tracking [text] 494
reboot [text] 504
SCSI verification [text] 499
selection [text] 502, 503
settings [text] 501
special memory pool [text] 491, 491
DRIVER_OBJECT [text] 308
.DeviceObject [text] 330, 332
.DriverExtension
.AddDevice
example [text] 327
.DriverStartIo [text] 712
.DriverUnload [text] 396
example [text] 327, 1175
.HardwareDatabase [text] 332
.MajorFunction [text] 311, 312, 322-716
example [text] 327, 336-1175
IRP_MJ_CLOSE [text] 396
IRP_MJ_CREATE [text] 396
NULL [text] 337
.StartIo
example [text] 327
DriverEntry [text] 310
extension
.AddDevice [text] 1174
illustrated [text] 311, 312, 312-1186
structure [text] 332
DriverEntry [text] 173, 174, 308-1170
called at load [text] 309, 310
example [text] 323, 326-331
illustrated [text] 1171
intermediate level [text] 1172
Lab2 [lab] 70
Plug-and-Play [text] 313, 1172
WDM [text] 1156
Drivers
virtual memory [text] 166, 167
DriverStartIo
DRIVER_OBJECT [text] 712
DriverUnload
example [text] 327, 334
guidelines [text] 333
DS [text] 279
DWORD
DWORD32 [text] 1327
DWORD64 [text] 1327
DWORD_PTR [text] 1328
DWORD32 [text] 1327
DWORD64 [text] 1327
DWORD_PTR [text] 1328
Dzatko, Dave [text] 1625
EaLength
IO_STACK_LOCATION.Parameters.Create [text] 692
eax [text] 262
result register [text] 262
ebp [text] 266
accessing [text] 270
frame pointer optimization [text] 272
illustrated [text] 269
local variables [text] 270
parameters [text] 270
saving [text] 270
ebx [text] 262
ecx [text] 262
edi [text] 262
Edward [text] 191, 1184-1217
edx [text] 262
edx:eax
result register [text] 262
edx_eax
64-bit result [text] 262
Efficiency
MFC [text] 1316
eflags
popf [text] 268
pushf [text] 268
eip [text] 266
EISA bus [text] 245
Elevator head scheduler [text] 701
Else [text] 1185
EMI problems [text] 957
endian dependent [text] 39
Endpoint
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1435
descriptor (USB) [text] 1365, 1373-1375
HID [text] 1462, 1466, 1467
URB_FUNCTION_CLASS_ENDPOINT [text] 1435
URB_FUNCTION_VENDOR_ENDPOINT [text] 1431
USB [text] 1357
HID [text] 1466, 1467
Enumeration
PCMCIA [text] 1505
USB [text] 1359, 1360
USB hub [text] 1361
Environment variables
_NT_DEBUG_BAUD_RATE [lab] 10, 11
_NT_DEBUG_PORT [lab] 10, 10, 11
_NT_KD_FILES [lab] 10, 11
_NT_SYMBOL_PATH [lab] 10, 11
editing [lab] 12-14
WinDbg [lab] 6, 7, 10, 11
EOP [lab] 43, 44
input [lab] 61, 63
Epilog [text] 270
ERESOURCE [text] 1016
ERR [lab] 44
input [lab] 61, 63
output [lab] 66
Error
EVENTLOG_ERROR_TYPE [text] 1045
Error code
format [text] 361
user-defined [text] 361, 362, 1053-1259
Error code format [text] 1053, 1054, 1259
ERROR_DIV_0 [text] 1243
ERROR_IO_PENDING [text] 69
ERROR_LOG_MAXIMUM_SIZE [text] 1082
ErrorControl
HKLM\...\Services [text] 452
Registry [text] 455
ES [text] 279
esi [text] 262
esp [text] 266
illustrated [text] 269
Event [text] 1003, 1004, 1184
KeInitializeEvent [text] 1011
KeResetEvent [text] 1012
KeSetEvent [text] 1012
KEVENT [text] 1011, 1012
video miniport [text] 1321
Event block
WMI [text] 1518
Event log
application [text] 1033
audit event [text] 1078
DeregisterEventSource [text] 1043
entry [text] 1077
Error [text] 1038
event entry [text] 1078
event types [text] 1038
event viewer
illustrated [text] 1049
guidelines [text] 1077
illustrated [text] 1037
Informational [text] 1038
IO_ERROR_LOG_PACKET [text] 1084
IoAllocateErrorLogEntry [text] 1080-1082, 1087
IoWriteErrorLogEntry [text] 1088
IoWriteLogErrorEntry [text] 1080
justification [text] 1034, 1076
RegisterEventSource [text] 1043, 1044
ReportEvent [text] 1043, 1047-1068
security [text] 1033
system [text] 1032, 1033
text [text] 1039
guidelines [text] 1040
viewer [text] 1032
illustrated [text] 1035-1037, 1041
Warning [text] 1038
Event viewer [text] 1032
illustrated [text] 1035-1037, 1041
Event-driven [text] 23, 29
EVENT_INCREMENT [text] 357
EVENTLOG_ERROR_TYPE [text] 1045
EVENTLOG_INFORMATION_TYPE [text] 1045
EVENTLOG_WARNING_TYPE [text] 1045, 1048
EventMessageFile
HKLM\...\EventLog\System\drivername [text] 1045
ExAcquireFastMutex [text] 1013
ExAcquireFastMutexUnsafe [text] 1013
ExAcquireResourceExclusiveLite [text] 1016
ExAcquireResourceSharedLite [text] 1016
ExAcquireSharedStartExclusive [text] 1019
ExAcquireSharedWaitForExclusive [text] 1019
ExAllocateFromNPagedLookasideList [text] 917
ExAllocatePool [text] 907
example [text] 1221
ExAllocatePoolWithTag [text] 911
Exception
hardware [text] 207
POOL_RAISE_IF_ALLOCATION_FAILURE [text] 916
Exception handler [text] 1235
__except [text] 1236, 1242-1260
illustrated [text] 1237-1240
__finally [text] 1260, 1265-1269
__leave [text] 1260-1263
__try [text] 1236, 1242-1260
illustrated [text] 1237-1240
AbnormalTermination [text] 1247, 1248, 1267-1269
C++ (forbidden) [text] 1270
control flow [text] 1237-1240
illustrated [text] 1241
EXCEPTION_CONTINUE_EXECUTION [text] 1246
illustrated [text] 1241
EXCEPTION_CONTINUE_SEARCH [text] 1246
illustrated [text] 1240
EXCEPTION_EXECUTE_HANDLER [text] 1246
illustrated [text] 1239
EXCEPTION_NONCONTINUABLE_EXCEPTION [text] 1258
EXCEPTION_NOT_CONTINUABLE [text] 1246
EXCEPTION_POINTERS [text] 1256, 1264
EXCEPTION_RECORD [text] 1256
ExRaiseAccessViolation [text] 1248, 1250
ExRaiseDatatypeMisalignment [text] 1248, 1251
ExRaiseStatus [text] 1248, 1249
GetExceptionCode [text] 1247, 1248, 1252, 1253
GetExceptionInformation [text] 1247, 1248, 1254-1257
PASSIVE_LEVEL [text] 1248
PEXCEPTION_POINTERS [text] 1264
RaiseException [text] 1247, 1258
EXCEPTION_ACCESS_VIOLATION [text] 1264
EXCEPTION_CONTINUE_EXECUTION [text] 1246
EXCEPTION_CONTINUE_SEARCH [text] 1246, 1264
illustrated [text] 1240, 1240
EXCEPTION_EXECUTE_HANDLER
illustrated [text] 1239
EXCEPTION_NONCONTINUABLE_EXCEPTION [text] 1258
EXCEPTION_NOT_CONTINUABLE [text] 1246
EXCEPTION_POINTERS [text] 1256, 1264
EXCEPTION_RECORD [text] 1256
ExConvertExclusiveToSharedLite [text] 1019
ExDeleteNPagedLookasideList [text] 919
EXECEPTION_EXECUTE_HANDLER [text] 821, 1246
Executable
examining [text] 1060-1063
Executive Resource [text] 1003
Executive resource [text] 1005, 1015
ERESOURCE [text] 1016
ExAcquireResourceExclusiveLite [text] 1016
ExAcquireResourceSharedLite [text] 1016
ExAcquireSharedStartExclusive [text] 1019
ExAcquireSharedWaitForExclusive [text] 1019
ExConvertExclusiveToSharedLite [text] 1019
ExInitializeResourceLite [text] 1016
ExReleaseResourceForThreadLite [text] 1016
multiple-reader [text] 1017
single-writer [text] 1018
waitable object (not!) [text] 1021
Executive services [text] 175, 176
ExFreePool [text] 574, 913
example [text] 585, 1226
ExFreePoolWithTag [text] 913
ExFreeToNPagedLookasideList [text] 918
ExInitializeFastMutex [text] 1013
ExInitializeNPagedLookasideList [text] 915
ExInitializeResourceLilte [text] 1016
ExInterlockedInsertHeadList [text] 728, 733
ExInterlockedInsertTailList [text] 728, 733
ExInterlockedRemoveHeadList [text] 728, 729, 733
illustrated [text] 732
ExRaiseAccessViolation [text] 1248, 1250
ExRaiseDatatypeMisalignment [text] 1248, 1251
ExRaiseStatus [text] 1248, 1249
ExReleaseFastMutex [text] 1013, 1013
ExReleaseFastMutexUnsafe [text] 1013
ExReleaseResourceForThreadLite [text] 1016
Extender card [text] 964, 965
Extension
Controller extension [text] 788
device [text] 308, 345, 346
illustrated [text] 311, 312, 347-352
driver object [text] 1174
DRIVER_OBJECT [text] 1174
File Object [text] 564
Ex… [text] 176
F10
F5
WinDbg [lab] 15, 21, [text] 462
F8
WinDbg [lab] 21
Facility code [text] 361, 1053-1259
FALSE [text] 1184
Fast mutex [text] 1003, 1005
deadlock detection [text] 498
ExAcquireFastMutex [text] 1013
ExAcquireFastMutexUnsafe [text] 1013
ExInitializeFastMutex [text] 1013
ExReleaseFastMutex [text] 1013, 1013
ExReleaseFastMutexUnsafe [text] 1013
KFAST_MUTEX [text] 1013
mutex comparison [text] 1014
waitable object (not!) [text] 1021
FASTCALL
example [text] 290
fastdetect
BOOT.INI [text] 446
FAT
illustrated [text] 123, 124
FAULTING_IP [text] 475
FDO [text] 1157, 1158
I8042 [text] 1480, 1485
illustrated [text] 1160, 1186
KBdhid [text] 1480, 1485
Fdo [text] 1185, 1185
fdoExt [text] 1217, 1217
fdoExtension [text] 1184, 1184, 1185
Feature
_URB_CONTROL_FEATURE_REQUEST [text] 1392, 1417-1424
URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE [text] 1418, 1421
URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT [text] 1423
URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE [text] 1422
URB_FUNCTION_CLEAR_FEATURE_TO_OTHER [text] 1424
URB_FUNCTION_SET_FEATURE_TO_DEVICE [text] 1417
URB_FUNCTION_SET_FEATURE_TO_ENDPOINT [text] 1419
URB_FUNCTION_SET_FEATURE_TO_OTHER [text] 1420
Fence
LFENCE [text] 304
memory [text] 42
MFENCE [text] 304
SFENCE [text] 304
File Object [text] 562, 563
extension [text] 564
FsContext [text] 564
IO_STACK_LOCATION.FileObject [text] 691
IRP_MJ_CLEANUP [text] 564
IRP_MJ_CREATE [text] 564, 565
File system
driver [text] 98, 104, 105
filter driver
illustrated [text] 106-108, 1116, 1117
Windows NT File System Internals [text] 1624
File system driver
illustrated [text] 106-108, 689-1117
File system filter driver [text] 1114, 1115
FILE_128_BYTE_ALIGNMENT [text] 343
FILE_32_BYTE_ALIGNMENT [text] 343
FILE_512_BYTE_ALIGNMENT [text] 343
FILE_64_BYTE_ALIGNMENT [text] 343
FILE_ANY_ACCESS [text] 652, 653
FILE_APPEND_DATA [text] 51
FILE_ATTRIBUTE_NORMAL
FILE_BYTE_ALIGNMENT [text] 343
FILE_DEVICE_* [text] 350
8042_PORT [text] 350
ACPI [text] 350
BATTERY [text] 350
BEEP [text] 350
CD_ROM [text] 350
CD_ROM_FILE_SYSTEM [text] 350
CHANGER [text] 350
CONTROLLER [text] 350
DATALINK [text] 350
DFS [text] 350
DFS_FILE_SYSTEM [text] 350
DFS_VOLUME [text] 350
DISK [text] 350
DISK_FILE_SYSTEM [text] 350
DVD [text] 350
FIPS [text] 350
FULLSCREEN_VIDEO [text] 350
INPORT_PORT [text] 350
KEYBOARD [text] 350
KS [text] 350
KSEC [text] 350
MASS_STORAGE [text] 350
MIDI_IN [text] 350
MIDI_OUT [text] 350
MODEM [text] 350
MOUSE [text] 350
MULTI_UNC_PROVIDER [text] 350
NETWORK [text] 350
NETWORK_BROWSER [text] 350
NETWORK_FILE_SYSTEM [text] 350
NETWORK_REDIRECTOR [text] 350
NULL [text] 350
PARALLEL_PORT [text] 350, 350
PHYSICAL_NETCARD [text] 350
PIPE [text] 350
PRINTER [text] 350
SCANNER [text] 350
SCREEN [text] 350
SERENUM [text] 350
SERIAL_MOUSE_PORT [text] 350
SERIAL_PORT [text] 350
SMARTCARD [text] 350
SMB [text] 350
SOUND [text] 350
STREAMS [text] 350
TAPE [text] 350
TAPE_FILE_SYSTEM [text] 350
TERMSERV [text] 350
TRANSPORT [text] 350
UNKNOWN [text] 350
VDM [text] 350
VIDEO [text] 350
VIRTUAL_DISK [text] 350
WAVE_IN [text] 350
WAVE_OUT [text] 350
FILE_DEVICE_UNKNOWN [text] 1177
example [text] 328, 397
FILE_FLAG_NORMAL [text] 53
FILE_FLAG_OVERLAPPED [text] 53, 69
FILE_LONG_ALIGNMENT [text] 343
FILE_OBJECT
.FileName [text] 566, 567
.FSContext [text] 563, 564, 566-568
.FsContext
example [text] 569, 572-574
.FsContext2 [text] 566
example [text] 569-582, 584, 585
IRP_MJ_CLEANUP [text] 564
IRP_MJ_CREATE [text] 565
FILE_OCTA_ALIGNMENT [text] 343
FILE_QUAD_ALIGNMENT [text] 343
FILE_READ_ACCESS [text] 652, 653
FILE_READ_ATTRIBUTES [text] 51
FILE_READ_DATA [text] 51
FILE_READ_EA [text] 51
FILE_SHARE_DELETE [text] 52
FILE_SHARE_READ [text] 52
FILE_SHARE_WRITE [text] 52
FILE_WORD_ALIGNMENT [text] 343
FILE_WRITE_ACCESS [text] 652, 653
FILE_WRITE_ATTRIBUTES [text] 51
FILE_WRITE_DATA [text] 51
FILE_WRITE_EA [text] 51
FileAttributes
IO_STACK_LOCATION.Parameters.Create [text] 692
FILEFLAGS [text] 983
FILEFLAGSMASK [text] 983
FileName
FILE_OBJECT [text] 566, 567
FILEOS [text] 983
FILESUBTYPE [text] 983
FILETYPE [text] 983
FILEVERSION [text] 983
Filter
driver [text] 98
Filter driver [text] 98, 1113-1115
file system [text] 1114, 1115
illustrated [text] 106-108, 1116, 1117
IoAttachDevice [text] 1118
illustrated [text] 1119-1122
FindFirstFile [text] 48
FindNextFile [text] 48
Finite state machine
see FSM [text] 783
Firewire
bus analyzer [text] 961, 962
compared to USB [text] 1386
debugging [text] 973
debugging port [text] 483
driver [text] 98
performance [text] 1508, 1509
WDM [text] 1147
Firewire System Architecture [text] 1625
Flag [text] 1185
Flags [text] 1185
eflags [text] 266
rflags [text] 266
flags
popf [text] 268
pushf [text] 268
Floating point
forbidden [text] 374
Floppy
driver [text] 113
Floppy driver
example [text] 1022-1025
Flush
cache [text] 230, 241
FlushAdapterBuffers [text] 898, 901
illustrated [text] 899
IoFlushAdapterBuffers [text] 1563, 1566
illustrated [text] 1564
KeFlushIoBuffers [text] 898, 900-1565
illustrated [text] 890, 899-1564
FlushAdapterBuffers [text] 898, 901
DMA_OPERATIONS [text] 871, 872
illustrated [text] 894-896, 899-1561
Foreground
priority [text] 177, 178
FormatMessage [text] 1083
%n [text] 1065-1068, 1071
parameters [text] 1065-1068, 1071
FPO [text] 272
Frame
_URB_FRAME_LENGTH_CONTROL [text] 1402, 1403
_URB_GET_CURRENT_FRAME_NUMBER [text] 1406
_URB_GET_FRAME_LENGTH [text] 1404
_URB_SET_FRAME_LENGTH [text] 1405
URB_FUNCTION_GET_CURRENT_FRAME_NUMBER [text] 1406
URB_FUNCTION_GET_FRAME_LENGTH [text] 1404
URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL [text] 1403
URB_FUNCTION_SET_FRAME_LENGTH [text] 1405
URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL [text] 1402
Frame pointer
ebp
illustrated [text] 269
Frame Pointer Optimization [text] 272
Free Build
driver [text] 372
kernel [text] 370
FreeAdapterChannel
DMA_OPERATIONS [text] 871, 872, 881
illustrated [text] 894-896
FreeCommonBuffer
DMA_OPERATIONS [text] 871, 872
FreeMapRegisters
DMA_OPERATIONS [text] 871, 873
FS [text] 279
FsContext [text] 563
example
IRP_MJ_CLEANUP [text] 583-585
IRP_MJ_CREATE [text] 569-575
IRP_MJ_READ [text] 577-582
example. IRP_MJ_CREATE [text] 576
FILE_OBJECT [text] 568
FILE_OBJECT*PHRASE=FsContext2
FILE_OBJECT [text] 566
FSM [text] 783
illustrated [text] 784
Full duplex
queue [text] 701
Full speed
bulk transfer [text] 1355
cable length [text] 1383
HID [text] 1454, 1458
endpoints [text] 1460
USB [text] 1349, 1351
Function
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1436
URB_FUNCTION_CLASS_OTHER [text] 1436
Function driver [text] 1159
Functional Device Object
see FDO [text] 1157
FunctionNumber
PCI_SLOT_NUMBER [text] 1595
Functions
deprecated [text] 511-513
GDI [text] 122
illustrated [text] 116, 121
GDI32 [text] 122
illustrated [text] 116, 121
GENERIC_READ [text] 51
GENERIC_WRITE [text] 51
GetDmaAdapter [text] 874
GetExcepitonCode [text] 1247, 1252, 1253
GetExcepitonInformation [text] 1254-1257
GetExceptionCode [text] 1248
GetExceptionInformation [text] 1247, 1248
GetLastError
effective use [text] 1079
ERROR_IO_PENDING [text] 69
IO_STATUS_BLOCK
.Status [text] 360
GetModuleName [text] 1046
GetOverlappedResult [text] 71
GetQueuedCompletionStatus [text] 71, 78-80
GetScatterGatherList
DMA_OPERATIONS [text] 871, 873-885
gflags [text] 538, 539
global
never used [text] 344
GO [lab] 43, 44
input [lab] 62, 63, 75
output [lab] 65, 66, 75
Go
WinDbg [text] 459
Graphics
driver [text] 98, 115-122
illustrated [text] 116, 120, 121
Group
HKLM\...\Services\diivername [text] 452
Registry [text] 455
GS [text] 279
GUI app
paradigm [text] 1276
GUI thread
driver impact [text] 93
GUID
defined [text] 1515, 1516
GUID_POWER_DEVICE_ENABLE [text] 1522
GUID_POWER_DEVICE_WAKE_ENABLE [text] 1522
HidD_GetHidGUID [text] 1488, 1489
MSWmi_MofData_GUID [text] 1520
WMI [text] 1519
WMI dat [text] 1517
GUID_POWER_DEVICE_ENABLE [text] 1522
GUID_POWER_DEVICE_WAKE_ENABLE [text] 1522
Gulliver’s Travels [text] 39
HAL [text] 40, 169-240
bus driver [text] 243
cache [text] 241
DMA [text] 241
HalGetAdapter [text] 1543
HalGetBusData [text] 254, 256
HalGetInterruptVector [text] 254, 760-764
HalTranslateBusAddress [text] 254-256
interrupt [text] 180, 241
multiprocessor [text] 242
PCI [text] 1587
portability [text] 38, 40
READ_PORT_BUFFER_UCHAR [text] 248, 250
READ_PORT_BUFFER_ULONG [text] 248, 250
READ_PORT_BUFFER_USHORT [text] 248, 250
READ_PORT_UCHAR [text] 247
using [text] 251, 252
READ_PORT_ULONG [text] 247
using [text] 251, 252
READ_PORT_USHORT [text] 247
using [text] 251, 252
READ_REGISTER_BUFFER_UCHAR [text] 248, 249
READ_REGISTER_BUFFER_ULONG [text] 248, 249
READ_REGISTER_BUFFER_USHORT [text] 248, 249
READ_REGISTER_UCHAR [text] 247
using [lab] 42, [text] 251, 252
READ_REGISTER_ULONG [text] 247
using [text] 251, 252
READ_REGISTER_USHORT [text] 247
using [text] 251, 252
special [text] 244
uniprocessor [text] 242
WRITE_REGISTER_BUFFER_UCHAR [text] 248, 248, 249
WRITE_REGISTER_BUFFER_ULONG [text] 248, 248, 249
WRITE_REGISTER_BUFFER_USHORT [text] 248, 248, 249
WRITE_REGISTER_UCHAR [text] 247, 247-293
using [lab] 42, [text] 251, 251, 252
WRITE_REGISTER_ULONG [text] 247, 247-294
illustrated [text] 295-298
using [text] 251, 251, 252
WRITE_REGISTER_USHORT [text] 247, 247-293
using [text] 251, 251, 252
HalAssignSlotResources [text] 1589
HALF_PTR [text] 1328
UHALF_PTR [text] 1328
HalGetAdapter [text] 1543
HalGetBusData [text] 254, 256-1588
simulator [lab] 71
HalGetBusDataByOffset [text] 1588
HalGetInterruptVector [text] 254, 760-764
HalTranslateBusAddress [text] 254-256
simulator [lab] 71
Hal… [text] 176
Handle [text] 563
DuplicateHandle [text] 563
FILE_OBJECT [text] 568
state [text] 562
Handler [text] 1184, 1185
HandleToLong [text] 1330
HandleToUlong [text] 1330
HARDWARE
HKEY_LOCAL_MACHINE [text] 149
Hardware
shared state [text] 787, 788
Hardware Abstraction Layer
see HAL [text] 238
Hardware simulator [lab] 41, 42, 48
control panel [lab] 49, 50
Get State button [lab] 42, 44-68
starting [lab] 68
HdwSim.sys [lab] 40-42, 48
starting [lab] 68
HdwSimDriver.reg [lab] 48
HeaderType
PCI_COMMON_CONFIG [text] 1596, 1600
Heisenbug [text] 955
HelloWorld.c [text] 369, 393-395
helloworld.sys [lab] 27
HID [text] 1453, 1484-1487
control endpoint [text] 1459
data [text] 1455
descriptor
report [text] 1469
string [text] 1468
device descriptor [text] 1462
Device_Qualifier [text] 1477
DirectX [text] 1495
endpoint [text] 1460, 1462-1467
control [text] 1459, 1460
interrupt [text] 1459, 1460
full speed [text] 1454
transaction [text] 1458
HidD_GetAttributes [text] 1488
HidD_GetCaps [text] 1489
HidD_GetFeature [text] 1494
HidD_GetHidGUID [text] 1488, 1489
HidD_GetPreparsedData [text] 1489
HidD_SetFeature [text] 1494
high speed [text] 1454
transaction [text] 1458
interface [text] 1465
interrupt endppint [text] 1459
item [text] 1470-1472
keyboard [text] 1479-1481, 1485
low speed [text] 1454
transaction [text] 1458
Mouclass [text] 1480, 1485
mouse [text] 1479-1481, 1485
Other_Speed_Configuration [text] 1478
ProductID [text] 1463
report [text] 1455-1457, 1461-1493
requirements [text] 1459
scope [text] 1472
global [text] 1475
local [text] 1476
main [text] 1473, 1474
serial number [text] 1463
Sermouse [text] 1480, 1485
SetupDiEnumDeviceInterfaces [text] 1488, 1489
SetupDiGetClassDevs [text] 1488, 1489
SetupDiGetDeviceInterfaceDetail [text] 1488, 1489
string descriptor [text] 1468
transaction [text] 1458
VendorID [text] 1463
HidD_GetAttributes
HID [text] 1488
HidD_GetCaps
HID [text] 1489
HidD_GetFeature [text] 1494
HidD_GetHidGuid [text] 1488, 1489
HidD_GetPreparsedData
HID [text] 1489
HidD_SetFeature [text] 1494
Hidgame
miniport [text] 1480, 1485
Hidusb
miniport [text] 1480, 1485
High speed
bulk transfer [text] 1355
HID [text] 1454, 1458
endpoints [text] 1460
USB [text] 1349, 1351
History
x86 [text] 260
HKEY_CLASSES_ROOT [text] 141
HKEY_CURRENT_USER [text] 141
HKEY_LOCAL_MACHINE [text] 141, 143
HARDWARE [text] 142, 149
SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter [text] 378
SYSTEM\CurrentControlSet\Services\drivername [text] 148, 452
DisplayName [text] 148, 452
ErrorControl [text] 148, 452
Group [text] 452
ImagePath [text] 148
Start [text] 148, 452
Type [text] 148, 452
SYSTEM\CurrentControlSet\Services\EventLog\System\drivername
EvemtMessageFile [text] 1045
TypesSupported [text] 1045
HKEY_USERS [text] 141
Host
configuration [text] 429, 431
illustrated [text] 432
Hub
enumeration [text] 1360, 1361
USB [text] 1348
USB root [text] 1350, 1351
Human Interface Device class [text] 1453, 1484
HyperCriticalWorkQueue [text] 995
Hyperthreading [text] 28
I/O
buffered [text] 630, 632
direct [text] 630, 632
I/O bus [text] 187
illustrated [text] 188
I/O Completion Port [text] 58, 74, 75
architecture
illustrated [text] 82
ConnectNamedPipe [text] 79
CreateIoCompletionPort [text] 76, 77
DeviceIoControl [text] 79
GetQueuedCompletionStatus [text] 71, 78, 79
LockFileEx [text] 79
maximum concurrency value [text] 75
PostQueuedCompletionStatus [text] 79
ReadDirectoryChangesW [text] 79
ReadFile [text] 79
TransactNamedPipe [text] 79
WaitCommEvent [text] 79
WriteFile [text] 79
I/O Manager [text] 169, 170, 173, 174
buffering [text] 630, 632-650
illustrated [text] 639-642, 645-657
Driver object [text] 323
illustrated [text] 106-108, 340-1117
interrupt [text] 180, 203
MajorFunction dispatch [text] 337
services [text] 176
I/O port [text] 217
BaseAddress [text] 1584
bus relative [text] 253
HalTranslateBusAddress [text] 254-256
system relative [text] 253
HalTranslateBusAddress [text] 254-256
I/O Request Packet
see IRP [text] 63
I/O Verification [text] 495
I8042
FDO [text] 1480, 1485
IA64 [text] 26
alignment [text] 1325
IACK
input [lab] 62
output [lab] 65
ICE [text] 963
IDE
not used [text] 408
Idle
priority [text] 87, 177, 178
IDT [text] 206
illustrated [text] 754
IE
input [lab] 62
output [lab] 65
If [text] 1185
Illegal instruction [text] 468
ImagePath
Registry [text] 453
Immediate addressing [text] 280
IN [text] 1217, 1217
in [text] 217
In-Circuit Emulator [text] 958, 963
inc [text] 288
lock [text] 287
two cycles [text] 27
Index register [text] 279
Indexed addressing [text] 280
Information
EVENTLOG_INFORMATION_TYPE [text] 1045
InitializeListHead [text] 725, 733
InputBufferLength
IO_STACK_LOCATION.Parameters.DeviceIoControl [text] 695
InsertHeadList [text] 733
InsertTailList [text] 733
cancel-safe-queue [text] 1613
Inside Microsoft Windows [text] 1624
Installation
Registry [text] 456
Instruction
arithmetic [text] 273
call/return [text] 268
control transfer [text] 276
interrupt [text] 277
jump [text] 276
mov [text] 267
string [text] 277
pointer
eip [text] 266
rip [text] 266
stack [text] 268
Instructions [text] 191
INT
input [lab] 61
int
INT32 [text] 1327
INT64 [text] 1327
int 3 [text] 277
int n [text] 277
INT32 [text] 1327
INT64 [text] 1327
INT_PTR [text] 1328
Interface
_URB_CONTROL_GET_INTERFACE_REQUEST [text] 1392, 1438
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1430, 1431, 1434
_URB_SELECT_INTERFACE [text] 1400
descriptor (USB) [text] 1365, 1371, 1372
device [text] 552, 553
IoGetDeviceInerfaceAlais [text] 555
IoGetDeviceInterface [text] 555
IoOpenDeviceInterfaceRegistryKey [text] 555
IoRegisterDeviceInterface [text] 555
IoSetDeviceInterfaceState [text] 555
HID [text] 1465
IoRegisterDeviceInterface [text] 556
IoSetDeviceInterfaceState [text] 556
rules [text] 18
SetDiGetDeviceInterfaceDetail [text] 557
SetupDiDestroyDeviceInfoList [text] 557
SetupDiEnumDeviceInterfaces [text] 557
SetupDiGetClassDevs [text] 557
URB_FUNCTION_CLASS_INTERFACE [text] 1434
URB_FUNCTION_GET_INTERFACE [text] 1438
URB_FUNCTION_SELECT_INTERFACE [text] 1400
URB_FUNCTION_VENDOR_INTERFACE [text] 1430
USB [text] 1465
Interface_Power
descriptor (USB) [text] 1365, 1380
INTERFACE_TYPE [text] 759, 763
InterlockedCompareExchange [text] 290, 291, 608
InterlockedDecrement [text] 289, 608
InterlockedExchange [text] 608
InterlockedIncrement [text] 288, 608
Intermediate-level driver [text] 99, 130-1149
Interrupt [text] 34
bus interrupt vector [text] 759
bus relative [text] 253
HalGetInterruptVector [text] 254-256
CM_RESOURCE_LIST [text] 1198
connecting [text] 762, 764, 765
defined [text] 208
descriptor table [text] 206
disconnecting [text] 1206
dispatching [text] 755
HAL [text] 241
HalGetInterruptVector [text] 760
hardware [text] 180
IACK
input [lab] 62
output [lab] 65
IDT [text] 206
IE
input [lab] 62
output [lab] 65
illustrated [text] 779
IoConnectInterrupt [text] 766-769
ISA [text] 200
ISR/DPC [text] 756, 757
KiInterruptDispatch [text] 754, 755
Lab3 [lab] 73
latency
unbounded [text] 43
layered driver [text] 753
level [text] 759
level-triggered [text] 201, 203
illustrated [text] 202
level-triggered. illustrated [text] 204
mapping [text] 180
message-based [text] 205
object
illustrated [text] 779
PCI [text] 200
processing
illustrated [text] 754
scope [text] 772
IRP..IoCompleteRequest [text] 772
IRP_MJ_CREATE..IRP_MJ_CLOSE [text] 772
IRP_MN_START_DEVICE..IRP_MN_STOP_DEVICE [text] 772
shared [text] 180, 203
system relative [text] 253
HalGetInterruptVector [text] 254-256
vector [text] 759
HalGetInterruptVector [text] 762, 764
Interrupt object [text] 173, 174
illustrated [text] 778
spin lock [text] 755
illustrated [text] 892, 1557
Interrupt Service Routine
see ISR [text] 181
Interrupt transfer [text] 1352, 1354
InterruptLine
PCI_COMMON_CONFIG [text] 1598, 1601
InterruptPin
PCI_COMMON_CONFIG [text] 1596, 1601
IntToPtr [text] 1330, 1331
INVALID_HANDLE_VALUE [text] 50
CreateIoCompletionPort [text] 76
example [text] 404
IO_ALLOCATION_ACTION [text] 791, 793-1546
IO_CD_ROM_INCREMENT [text] 357
IO_CSQ [text] 1608
example [text] 1613-1615, 1621, 1622
IO_DISK_INCREMENT [text] 357
IO_ERROR_LOG_ENTRY
.DumpDataSize [text] 1088
.ErrorCode [text] 1088
.FinalStatus [text] 1088
.IoControlCode [text] 1088
.MajorFunctionCode [text] 1088
.RetryCount [text] 1088
.SequenceNumber [text] 1088
.UniqueErrorValue [text] 1088
IO_ERROR_LOG_PACKET [text] 1081, 1084-1087
.DeviceOffset [text] 1086
.DumpData [text] 1086
.DumpDataSize [text] 1085
.ErrorCode [text] 1086
.EventCategory [text] 1085
.FinalStatus [text] 1086
.IoControlCode [text] 1086
.MajorFunctionCode [text] 1085
.NumberOfStrings [text] 1085
.RetryCount [text] 1085
.SequenceNumber [text] 1086
.StringOffset [text] 1085
.UniqueErrorValue [text] 1086
size [text] 1082
IO_KEYBOARD_INCREMENT [text] 357
IO_MAILSLOT_INCREMENT [text] 357
IO_MOUSE_INCREMENT [text] 357
IO_NAMED_PIPE_INCREMENT [text] 357
IO_NETWORK_INCREMENT [text] 357
IO_NO_INCREMENT [text] 354, 357-359
example [text] 400
IO_PARALLEL_INCREMENT [text] 357
IO_SERIAL_INCREMENT [text] 357
IO_SOUND_INCREMENT [text] 357
IO_STACK_LOCATION [text] 690
.DeviceObject [text] 691
.FileObject [text] 691
.MajorFunction [text] 690, 718
.MinorFunction [text] 690, 1201
example [text] 1193
.Parameters [text] 690
.Create [text] 692
.EaLength [text] 692
.FileAttributes [text] 692
.Options [text] 692
.SecurityContext [text] 692
.ShareAccess [text] 692
.DeviceIoControl [text] 695
.InputBufferLength [text] 695
.IoControlCode [text] 695, 1107
.OutputBufferLength [text] 695
.Type3InputBuffer [text] 695
.Others
.Argument1 [text] 1439, 1440, 1443
.Power [text] 1168
.State [text] 1222, 1224
.DeviceState [text] 1224
.SystemState [text] 1223
.Type [text] 1222
.Read [text] 693
.ByteOffset [text] 693
.Key [text] 693
.Length [text] 693
.StartDevice
.AllocatedResources [text] 1198
.AllocatedResourcesTranslated [text] 761
.AllocatedResourceTranslated [text] 1198
.Write [text] 694
.ByteOffset [text] 694
.Key [text] 694
.Length [text] 643, 694
.Parameters.DeviceIoControl.Type3InputBuffer [text] 672
.Read
.Length [text] 637
example [text] 569-574, 577-1615
IoSkipCurrentIrpStackLocation
example [text] 1203, 1205-1207
IO_STATUS_BLOCK [text] 685, 686
.Information [text] 359, 634, 635
example [text] 400, 401
values [text] 365
.Status [text] 359, 360, 362
example [text] 400, 401
user-defined [text] 362
example [text] 1442
IO_VIDEO_INCREMENT [text] 357
IO_WORKITEM [text] 995
IoAcquireCancelSpinLock [text] 742, 748
IoAllocateAdapterChannel [text] 1544, 1545
illustrated [text] 1555, 1561
IoAllocateController [text] 788, 790
IoAllocateErrorLogEntry [text] 1080, 1081, 1087
size [text] 1082
IoAllocateIrp [text] 1109
illustrated [text] 1137-1139
IoAllocateMdl [text] 816, 824
IoAllocateWorkItem [text] 994, 995
IoAttachDevice [text] 1113, 1118
illustrated [text] 1119-1122
IoAttachDeviceToDeviceStack [text] 1123, 1185
IoBuildAsynchronousFsdRequest [text] 1110
IoBuildDeviceIoControlRequest [text] 1109
example [text] 1443
IoBuildPartialMdl [text] 816, 823-1447
IoBuildSynchronousFsdRequest [text] 1110
IoCallDriver [text] 687, 1105-1447
illustrated [text] 1119-1122, 1136-1139
PoCallDriver [text] 1211
USBD [text] 1446
IoCompleteRequest [text] 353, 354, 638-1134
DPC [text] 782
example [text] 400, 401, 576-1622
illustrated [text] 894-896, 1136-1561
interrupt scope [text] 772
priority boost [text] 354, 356-359
required [text] 1126
IoConnectInterrupt [text] 766-769, 1195
IRP_MN_START_DEVICE [text] 1195
preconditions [text] 769
IoControlCode
IO_STACK_LOCATION.Parameters.DeviceIoControl [text] 695
IoCopyCurrentIrpStackLocationToNext [text] 696, 1217
example [text] 1196
IoCreateController [text] 788, 789
IoCreateDevice [text] 348-350
AddDevice [text] 1177
device extension [text] 346
DeviceCharacteristics [text] 351
DeviceExtensionSize [text] 349
DeviceName [text] 350
DeviceType [text] 350
DriverObject [text] 349
example [text] 328, 397
Exclusive [text] 351
illustrated [text] 778
IoCreateSymbolicLink
example [text] 330, 398
IoCsqInitialize [text] 1610, 1611, 1620
IoCsqInsertIrp [text] 1607, 1608
IoCsqRemoveIrp [text] 1607
IoCsqRemoveNextIrp [text] 1607, 1608
IOCTL
IOCTL_INTERNAL_USB_SUBMIT_URB [text] 1439, 1440, 1443
IOCTL code [text] 652
illustrated [text] 653
IOCTL_HELLO_INITIALIZE [lab] 45
LAB2_IOCTL_HELLO_INITIALIZE [lab] 55
IOCTL_HELLO_READ [lab] 45
LAB2_IOCTL_HELLO_READ [lab] 55
IOCTL_HELLO_WRITE [lab] 45
LAB2_IOCTL_HELLO_WRITE [lab] 55
IOCTL_INTERNAL_USB_SUBMIT_URB [text] 1439, 1440, 1443
IOCTL_LAB_HELLO_READ [lab] 52, 56
IOCTL_LAB_HELLO_WRITE [lab] 53, 56
IOCTL_LAB_INITIALIZE [lab] 56, 59
IoDeleteDevice
example [text] 330, 334-402
IRP_MN_REMOVE_DEVICE [text] 1209
IoDeleteSymbolicLink [text] 334
example [text] 402
IoDetachDevice
IRP_MN_REMOVE_DEVICE [text] 1209
IoFlushAdapterBuffers [text] 1563, 1566
illustrated [text] 1559, 1560, 1564
IoFreeAdapterChannel [text] 1549
illustrated [text] 1559-1561
IoFreeController [text] 792, 795-1548
IoFreeIrp [text] 1132
IoFreeMdl [text] 823
IoFreeWorkItem [text] 994, 995
IoGetCurrentIrpStackLocation [text] 696, 1617
example [text] 570, 585-661
IoGetDeviceInterfaceAlias [text] 555
IoGetDeviceInterfaces [text] 555
IoGetDeviceObjectPointer [text] 1105, 1123
IoGetDmaAdapter [text] 877
IoGetNextIrpStackLocation [text] 696, 697, 1107
IoInitializeDpcRequest [text] 774
illustrated [text] 778
IoInitializeTimer
Lab4 [lab] 79
IoIs32BitProcess [text] 1337
IoIs32bitProcess [text] 1336, 1339, 1340
IoMakeAssociatedIrp [text] 1111
IoMapTransfer [text] 801, 1550, 1551
illustrated [text] 1556
IoMarkIrpPending [text] 353, 704-1139
example [text] 637, 644-661
illustrated [text] 889, 1554
IRP.PendingReturned [text] 1200
IoOpenDeviceInterfaceRegistryKey [text] 555
IoQueueWorkItem [text] 994, 995
IoRegisterDeviceInterface [text] 555, 556
IoRegisterShutdownNotification [text] 1274
IoReleaseCancelSpinLock [text] 745-748
IoRequestDpc [text] 613, 771-776
illustrated [text] 893, 1558
IoSetCancelRoutine [text] 742, 748
cancel-safe queue [text] 1621
IoSetCompletionRoutine [text] 1107, 1128-1196
illustrated [text] 1137-1139
power [text] 1225
IoSetDeviceInterfaceState [text] 555, 556
USB [text] 1446
IoSkipCurrentIrpStackLocation [text] 696
example [text] 1203, 1205-1207
IoStartNextPacket [text] 705, 717
DPC [text] 782
illustrated [text] 894-896, 1559-1561
IoStartPacket [text] 704, 705, 713-717
illustrated [text] 889, 896-1561
IoStartTimer [text] 931, 932
Lab4 [lab] 79
IoStatus
see IO_STATUS_BLOCK [text] 360
IOSTATUS_BLOCK
.Status [text] 363
IoStopTimer [text] 932, 933
IoTimer [text] 928-931, 938
IO_TIMER_ROUTINE [text] 931
IoInitializeTimer [text] 929, 930
IoStartTimer [text] 932
IoStopTimer [text] 932, 933
Lab4 [lab] 77-79
resolution [text] 936
IoWriteErrorLogEntry [text] 1088
IoWriteLogErrorEntry [text] 1080
Io… [text] 176
IRP [text] 676-679
.AssociatedIrp [text] 685, 1124
.SystemBuffer [text] 637
.AssociatedIrp.IrpCount [text] 1124
.AssociatedIrp.MasterIrp [text] 1124
.AssociatedIrp.SystemBuffer [text] 686, 1124
example [text] 643
.Cancel [text] 685, 749
.CancelIrql [text] 685
example [text] 745, 746
.CancelRoutine [text] 685
.DeviceQueueEntry [text] 685
.IoStatus [text] 685
.IoStatus.Information [text] 686
.IoStatus.Status [text] 686
.ListEntry [text] 685
.MasterIrp [text] 685
.MdlAddress [text] 685, 686
example [text] 661, 662
.PendingReturned [text] 685, 686, 1200
.StackSize [text] 1108
.SystemBuffer [text] 634, 635, 685
.Tail.Overlay
.ListEntry [text] 729, 1613-1617
illustrated [text] 732
.UserBuffer [text] 634, 635, 685, 686
Neither I/O [text] 673
associated [text] 1104
cancel [text] 736-738
complete [lab] 44
completing [lab] 66, 75, [text] 1126
creating [text] 680
creation [text] 170
deallocation [text] 1112
defined [text] 63
freeing [text] 682
interrupt scope [text] 772
IoAllocateIrp [text] 1109
IoBuildAsynchronousFsdRequest [text] 1110
IoBuildDeviceIoControlRequest [text] 1109
IoBuildSynchronousFsdRequest [text] 1110
IoCompleteRequest [text] 353, 354, 359-681
DPC [text] 782
example [text] 400, 401, 576-663
illustrated [text] 894-896, 1559-1561
IoFreeIrp [text] 1132
IoGetCurrentIrpStackLocation [text] 1617
example [text] 637, 643-661
IoGetNextIrpStackLocation [text] 1107
IoIs32bitProcess [text] 1339, 1340
IoMarkIrpPending [text] 353, 704
example [text] 644, 661
illustrated [text] 889, 1554
IoSetCompetionRoutine [text] 1196
IoStartPacket
illustrated [text] 889, 1554
IRP_MJ_CLEANUP [text] 65
IRP_MJ_CLOSE [text] 65
IRP_MJ_CREATE [text] 65
IRP_MJ_CREATE_MAILSLOT [text] 65
IRP_MJ_CREATE_NAMED_PIPE [text] 65
IRP_MJ_DEVICE_CHANGE [text] 65
IRP_MJ_DEVICE_CONTROL [text] 65
IRP_MJ_DIRECTORY_CONTROL [text] 65
IRP_MJ_FILE_SYSTEM_CONTROL [text] 65
IRP_MJ_FLUSH_BUFFERS [text] 65
IRP_MJ_INTERNAL_DEVICE_CONTROL [text] 65
IRP_MJ_LOCK_CONTROL [text] 65
IRP_MJ_PNP [text] 65, 333
IRP_MJ_POWER [text] 65
IRP_MJ_QUERY_EA [text] 65
IRP_MJ_QUERY_INFORMATION [text] 65
IRP_MJ_QUERY_QUOTA [text] 65
IRP_MJ_QUERY_SECURITY [text] 65
IRP_MJ_QUERY_VOLUME_INFORMATION [text] 65
IRP_MJ_READ [text] 65
IRP_MJ_SET_EA [text] 65
IRP_MJ_SET_INFORMATION [text] 65
IRP_MJ_SET_QUOTA [text] 65
IRP_MJ_SET_SECURITY [text] 65
IRP_MJ_SHUTDOWN [text] 65
IRP_MJ_SYSTEM_CONTROL [text] 65
IRP_SET_VOLUME_INFORMATION [text] 65
list [text] 729
illustrated [text] 724, 730, 731
pass-through [text] 1172, 1173
processing [text] 683
processing flow [text] 340
queue [text] 702
illustrated [text] 724, 730, 731
none [text] 703
reference count [text] 1182, 1183
decrementer [text] 1188
incrementer [text] 1187
reuse [text] 1106, 1107
role in driver [text] 64
structure [text] 684, 685
types [text] 64
Irp [text] 1217, 1217
IRP ordering [text] 701
IRP processing [text] 707-709
IRP stack [text] 687, 696
.Parameters
.DeviceIoControl
.Type3InputBuffer [text] 672
.Parameters.Read.Length [text] 637
.Parameters.Write.Length [text] 643
call usage verifier [text] 516
CreateFile [text] 692
DeviceIoControl [text] 695
illustrated [text] 689
IO_STACK_LOCATION [text] 690, 691
example [text] 661
IO_STACK_LOCATION.Parameters.Power [text] 1168
IoCopyCurrentIrpStackLocationToNext [text] 696
example [text] 1196
IoGetCurrentIrpStackLocation [text] 637, 696
example [text] 570, 585-643
IoGetNextIrpStackLocation [text] 696, 697
IoSkipCurrentIrpStackLocation [text] 696
example [text] 1203, 1205-1207
IRP.StackSize [text] 1108
PIO_STACK_LOCATION
example [text] 661
ReadFile [text] 693
usage [text] 688
WriteFile [text] 694
IRP_MJ_* [text] 63
dispatch routines [text] 337
handler [text] 340
IRP_MJ_CLEANUP [text] 65, 321-338
IRP_MJ_CLOSE [text] 65, 321-338
IRP_MJ_CREATE [text] 65, 321-338
IRP_MJ_CREATE_MAILSLOT [text] 65
IRP_MJ_CREATE_NAMED_PIPE [text] 65
IRP_MJ_DEVICE_CHANGE [text] 65
IRP_MJ_DEVICE_CONTROL [text] 65, 338
IRP_MJ_DIRECTORY_CONTROL [text] 65
IRP_MJ_FILE_SYSTEM_CONTROL [text] 65
IRP_MJ_FLUSH_BUFFERS [text] 65
IRP_MJ_INTERNAL_DEVICE_CONTROL [text] 65, 338, 339
IRP_MJ_LOCK_CONTROL [text] 65
IRP_MJ_PNP [text] 65, 321-338
IRP_MJ_POWER [text] 65, 338
IRP_MJ_QUERY_EA [text] 65
IRP_MJ_QUERY_INFORMATION [text] 65
IRP_MJ_QUERY_QUOTA [text] 65
IRP_MJ_QUERY_SECURITY [text] 65
IRP_MJ_QUERY_VOLUME_INFORMATION [text] 65
IRP_MJ_READ [text] 65, 338
IRP_MJ_SET_EA [text] 65
IRP_MJ_SET_INFORMATION [text] 65
IRP_MJ_SET_QUOTA [text] 65
IRP_MJ_SET_SECURITY [text] 65
IRP_MJ_SHUTDOWN [text] 65
IRP_MJ_SYSTEM_CONTROL [text] 65, 338
IRP_MJ_WRITE [text] 65, 338
IRP_SET_VOLUME_INFORMATION [text] 65
IRP_MJ_CLEANUP [text] 65, 321-338
example
w/FsContext [text] 583-585
handler [text] 173, 174
MajorFunction [text] 1175
IRP_MJ_CLOSE [text] 65, 321-338
handler [text] 173, 174, 401
interrupt scope [text] 772
Lab2 [lab] 70
MajorFunction [text] 1175
IRP_MJ_CREATE [text] 65, 321-338
example
w/FsContext [text] 569-576
File Object [text] 565
FILE_OBJECT [text] 564
FILEOBJECT.FsContext [text] 568
handler [text] 173, 174, 400
interrupt scope [text] 772
Lab2 [lab] 70
MajorFunction [text] 1175
IRP_MJ_CREATE_MAILSLOT [text] 65
IRP_MJ_CREATE_NAMED_PIPE [text] 65
IRP_MJ_DEVICE_CHANGE [text] 65
IRP_MJ_DEVICE_CONTROL [text] 65, 338
IoBuildDeviceIoControlRequest [text] 1109
IRP_MN_QUERY_ALL_DATA [text] 1520
IRP_MN_QUERY_SINGLE_INSTANCE [text] 1520
Lab2 [lab] 70
Lab3 [lab] 74
IRP_MJ_DIRECTORY_CONTROL [text] 65
IRP_MJ_FILE_SYSTEM_CONTROL [text] 65
IRP_MJ_FLUSH_BUFFERS [text] 65
IoBuildAsynchronousFsdRequest [text] 1110
IoBuildSynchronousFsdRequest [text] 1110
IRP_MJ_INTERNAL_DEVICE_CONTROL [text] 65, 338-1107
IoBuildDeviceIoControlRequest [text] 1109
IRP_MJ_LOCK_CONTROL [text] 65
IRP_MJ_MAXIMUM_FUNCTION [text] 1172
IRP_MJ_PNP [text] 65, 312-1216
blocking [text] 1180
handler [text] 174, 1191-1196
IRP_MN_CANCEL_REMOVE_DEVICE [text] 1194
completion [text] 1201
IRP_MN_CANCEL_STOP_DEVICE [text] 1194
completion [text] 1201
IRP_MN_EJECT [text] 1194
IRP_MN_QUERY_POWER [text] 1215
IRP_MN_QUERY_REMOVE_DEVICE [text] 1194
IRP_MN_QUERY_STOP_DEVICE [text] 1194, 1202-1205
IRP_MN_REMOVE_DEVICE [text] 313, 333-1209
IRP_MN_SET_POWER [text] 1223
IRP_MN_START
simulator [lab] 71
IRP_MN_START_DEVICE [text] 256, 312-1197
completion [text] 1201
illustrated [text] 778
interrupt scope [text] 772
USB [text] 1446
IRP_MN_STOP_DEVICE [text] 320, 321, 333-1207
interrupt scope [text] 772
IRP_MN_SURPRISE_REMOVAL [text] 1194
MajorFunction [text] 1174
unplug notification [text] 1361
IRP_MJ_POWER [text] 65, 313-1212
blocking forbidden [text] 1181
documentation lies [text] 1210
example [text] 1214
handler [text] 174, 1213-1225
IRP_MN_POWER_SEQUENCE [text] 1167, 1214
IRP_MN_QUERY_POWER [text] 1167
handler [text] 1218
IRP_MN_SET_POWER [text] 1167, 1221, 1222
IRP_MN_WAIT_WAKE [text] 1167, 1214
MajorFunction [text] 1174
IRP_MJ_QUERY_EA [text] 65
IRP_MJ_QUERY_INFORMATION [text] 65
IRP_MJ_QUERY_QUOTA [text] 65
IRP_MJ_QUERY_SECURITY [text] 65
IRP_MJ_QUERY_VOLUME_INFORMATION [text] 65
IRP_MJ_READ [text] 65, 338
buffered [text] 634
example [text] 637
example
w/FsContext [text] 577-582
handler [text] 173, 174
IoBuildAsynchronousFsdRequest [text] 1110
IoBuildSynchronousFsdRequest [text] 1110
USB [text] 1447
IRP_MJ_SET_EA [text] 65
IRP_MJ_SET_INFORMATION [text] 65
IRP_MJ_SET_QUOTA [text] 65
IRP_MJ_SET_SECURITY [text] 65
IRP_MJ_SET_VOLUME_INFORMATION [text] 65
IRP_MJ_SHUTDOWN [text] 65, 1273, 1274
IoBuildAsynchronousFsdRequest [text] 1110
IoBuildSynchronousFsdRequest [text] 1110
MajorFunction [text] 1175
IRP_MJ_SYSTEM_CONTROL [text] 65, 338-1514
IRP_MJ_WRITE [text] 65, 338
buffered [text] 635
handler [text] 173, 174
IoBuildAsynchronousFsdRequest [text] 1110
IoBuildSynchronousFsdRequest [text] 1110
USB [text] 1447
IRP_MN_* [text] 1192
decode [text] 1193
IRP_MN_REMOVE_DEVICE [text] 313, 320-333
IRP_MN_SET_POWER [text] 313
IRP_MN_START [text] 312
IRP_MN_START_DEVICE [text] 313, 320, 321
IRP_MN_STOP_DEVICE [text] 320, 321, 333
IRP_MN_CANCEL_REMOVE_DEVICE [text] 1194
completion [text] 1201
IRP_MN_CANCEL_STOP_DEVICE [text] 1194
completion [text] 1201
IRP_MN_EJECT [text] 1194
IRP_MN_POWER_SEQUENCE [text] 1167, 1214
IRP_MN_QUERY_ALL_DATA [text] 1520
IRP_MN_QUERY_POWER [text] 1167, 1215
handler [text] 1218
IRP_MN_QUERY_REMOVE_DEVICE [text] 1194
IRP_MN_QUERY_SINGLE_INSTANCE [text] 1520
IRP_MN_QUERY_STOP_DEVICE [text] 1194, 1202-1205
IRP_MN_REMOVE_DEVICE [text] 313, 320-1209
IRP_MN_SET_POWER [text] 313, 1167-1222
IRP_MN_SET_POWER*PHRASE=IRP_MJ_PNP
IRP_MN_SET_POWER [text] 1215
IRP_MN_START
simulator [lab] 71
IRP_MN_START_DEVICE [text] 256, 313-1197
completion [text] 1201
illustrated [text] 778
interrupt scope [text] 772
USB [text] 1446
IRP_MN_STOP_DEVICE [text] 320, 321, 333-1207
interrupt [text] 1206
interrupt scope [text] 772
IRP_MN_SURPRISE_REMOVAL [text] 1194
IRP_MN_WAIT_WAKE [text] 1167, 1214
IrpCount
IRP [text] 1124
IRPs [text] 1184
IRQL
driver verifier [text] 492
elevated
unbounded [text] 43
memory use [text] 490
pageable driver [text] 1537
IRQL_NOT_LESS_OR_EQUAL [text] 474, 475, 477, 478
ISA bus [text] 245
ISA System Architecture [text] 1625
IsListEmpty [text] 733
Isochronous
_URB_ISOCH_TRANSFER [text] 1409
URB_FUNCTION_ISOCH_TRANSFER [text] 1409
Isochronous I/O
_URB_ISOCH_TRANSFER [text] 1392
Isochronous transfer [text] 1352, 1356
ISR [text] 173, 174, 181-757
algorithm [text] 770, 771
check device interrupt [text] 203
connected [text] 758, 759
connecting [text] 760, 761, 766-769
connection [text] 763
context [text] 630
illustrated [text] 340, 683-1558
IoConnectInterrupt [text] 766
KeSynchronizeExecution [text] 608-613
KiInterruptDispatch [text] 754, 755
MDL [text] 799
pageable driver [text] 1537
preconditions [text] 769
process map [text] 166, 167
prototype [text] 766
spin lock [text] 755, 759-765
illustrated [text] 754
Joseph [text] 191, 1184-1217
KAFFINITY [text] 759
Kbdhid
FDO [text] 1480, 1485
Kd_IHVAUDIO_Mask [text] 378
Kd_IHVVIDEO_Mask [text] 378
KDPC [text] 777
KdPrint [text] 374
%ls [text] 374
buffer limit [text] 382
example [text] 395, 398-402
sample output [lab] 37
KdPrintEx [text] 375
%ls [text] 374
buffer limit [text] 382
ComponentId [text] 376
Level [text] 377, 379
KeAcquireInStackQueuedSpinLock [text] 603, 604, 613
KeAcquireInStackQueuedSpinLockAtDpcLevel [text] 603
KeAcquireSpinLock [text] 598, 613
cancel-safe queue [text] 1612
KeAcquireSpinLockAtDpcLevel [text] 601
KeCancelTimer [text] 935
KeDelayExecutionThread [text] 926, 927
KeepObject [text] 791, 793-1548
KeFlushIoBuffers [text] 897, 898, 900-1565
illustrated [text] 890, 899-1564
KeInitializeDpc [text] 941
Lab4 [lab] 80
KeInitializeEvent [text] 1011, 1184-1196
example [text] 1442
KeInitializeMutex [text] 1009
KeInitializeSemaphore [text] 1007
KeInitializeSpinLock [text] 596, 603
KeInitializeTimer [text] 935, 940, 941
Lab4 [lab] 80
KeInitializeTimerEx [text] 935, 942
KeQueryPerformanceCounter [text] 945-948
KeQuerySystemTime [text] 949
KeQueryTickCount [text] 949
KeQueryTimeIncrement [text] 949
KeReadStateTimer [text] 935
KeReleaseInStackQueuedSpinLock [text] 603, 604, 613
KeReleaseInStackQueuedSpinLockAtDpcLevel [text] 603
KeReleaseMutex [text] 1009
KeReleaseSemaphore [text] 1007
KeReleaseSpinLock [text] 600, 613
cancel-safe queue [text] 1612
KeReleaseSpinLockAtDpcLevel [text] 601
KeResetEvent [text] 1012
Kernel
mode [text] 154
entering [text] 155
services [text] 175, 176
Kernel memory map
illustrated [text] 808, 809, 813
Kernel spew [text] 371
Kernel symbols [text] 448, 449
KeSetBasePriorityThread [text] 996, 997, 1001
KeSetEvent [text] 1012
KeSetPriorityThread [text] 996, 997, 1000
KeSetTimer [text] 935, 943
Lab4 [lab] 80
KeSetTimerEx [text] 935, 943
KeStallExecutionProcessor [text] 924, 925
KeSynchronizeExecution [text] 599, 608-1003
illustrated [text] 891, 892, 896-1561
IRQL checking [text] 492
SyncCritSect [text] 183
KEVENT [text] 1011
example [text] 1442
KeInitializeEvent [text] 1196
KeWaitForSingleObject [text] 1109, 1110
on stack [text] 1195, 1196, 1199, 1200
KeWaitForMultipleObjects [text] 1020
timer [text] 939
KeWaitForSingleObject [text] 1020, 1109-1444
example [text] 1197, 1204-1209
timer [text] 939
Key
IO_STACK_LOCATION.Parameters.Read [text] 693
IO_STACK_LOCATION.Parameters.Write [text] 694
Keyboard
DirectX [text] 1496
driver [text] 113
HID [text] 1479-1481, 1485
Kbdhid [text] 1480, 1485
Ke… [text] 176
KFAST_MUTEX [text] 1013
KFLOATING_SAVE [text] 1325
KiInterruptDispatch [text] 754, 755
KINTERRUPT [text] 766-769
KLOCK_QUEUE_HANDLE [text] 604
KMODE_EXCEPTION_NOT_HANDLED [text] 465-467
KMUTEX [text] 1009
KPROCESSOR_MODE [text] 820, 927
KSEMAPHORE [text] 1007
KSPIN_LOCK [text] 596, 603-759
KTIMER [text] 940
KeInitializeTimer [text] 940
Lab4 [lab] 77, 80
L"…" [text] 324
L1 cache [text] 229, 231
illustrated [text] 221, 226-236
L2 cache [text] 229, 231
illustrated [text] 190, 221-236
L2 cache. illustrated [text] 235
Lab [lab] 72
Lab 1
hellobug1 [lab] 38
overview [lab] 27
Lab1
hellobug1 [lab] 28
hellobug2 [lab] 28, 38
Lab1HelloWorld [lab] 27
Lab2 [lab] 46
CloseHandle [lab] 51
CreateFile [lab] 51
DeviceIoControl [lab] 51-53
test.exe [lab] 57
Lab3
interrupts [lab] 73
Language
mc [text] 1051
LARGE_INTEGER
alignment [text] 1325
Latency
thread [text] 1028
LatencyTImer
PCI_COMMON_CONFIG [text] 1600
LatencyTimer
PCI_COMMON_CONFIG [text] 1597
Layered driver [text] 129, 130, 132-1151
completion routine [text] 1103, 1130
debugging [text] 972
filter [text] 1113-1115
illustrated [text] 1136, 1152
interrupt [text] 753
IoAttachDevice [text] 1118
IoAttachDeviceToDeviceStack [text] 1123
IoCallDriver [text] 687, 1105-1447
illustrated [text] 1119-1122, 1137-1139
IoCompleteRequest [text] 1126
IoGetNextIrpStackLocation [text] 1107
IoSetCompletionRoutine [text] 1107, 1128-1135
illustrated [text] 1137-1139
IRP reuse [text] 1106, 1107
new IRP [text] 1108, 1111, 1112
PoCallDriver [text] 1164, 1211
STATUS_PENDING [text] 1133
STATUS_SUCCESS [text] 1136
structure [text] 1149
lea [text] 277
Legacy
serial port [text] 481, 482
Legacy driver
comparison [text] 1142, 1143
events [text] 309
installing [text] 450
Length
cable (USB) [text] 1383, 1384
IO_STACK_LOCATION.Parameters.Read [text] 693
IO_STACK_LOCATION.Parameters.Write [text] 694
Level
DbgPrintEx [text] 379
KdPrintEx [text] 379
Level-triggered interrupt [text] 201, 203
illustrated [text] 202, 204
LFENCE [text] 304
lint
PREfast [text] 507-509
List
ExInterlockedInsertHeadList [text] 728, 733
ExInterlockedInsertTailList [text] 728, 733
ExInterlockedRemoveHeadList [text] 728, 729, 733
illustrated [text] 732
InitializeListHead [text] 725, 733
InsertHeadList [text] 733
InsertTailList [text] 733
cancel-safe [text] 1613
IRP
illustrated [text] 730, 731
IRP.Tail.Overlay
.DeviceQueueEntry [text] 685
.ListEntry [text] 685
IsListEmpty [text] 733
LIST_ENTRY [text] 725, 729
illustrated [text] 724, 730, 731
RemoveEntryList [text] 733
cancel-safe [text] 1614
RemoveHeadList [text] 733
RemoveTailList [text] 733
Tail.Overlay
.ListEntry
illustrated [text] 732
LIST_ENTRY [text] 725, 729
illustrated [text] 724, 730, 731
Local variables
ebp [text] 270
stack [text] 269
lock
prefix [text] 282-290, 294-303
LOCK_OPERATION [text] 820
LockFileEx [text] 79
LogEvents [text] 457
HKLM\...\Parameters [text] 452
Logical analyzer [text] 958, 959
LONG
FILE_LONG_ALIGNMENT [text] 343
long
LONG32 [text] 1327
LONG64 [text] 1327
LONG32 [text] 1327
LONG64 [text] 1327
LONG_PTR [text] 1328
longjmp [text] 1235
LongToHandle [text] 1330
LongToPtr [text] 1330, 1331
Lookaside list [text] 914, 915
ExAllocateFromNPagedLookasideList [text] 917
ExDeleteNPagedLookasideList [text] 919
ExFreeToNPagedLookasideList [text] 918
ExInitializeNPagedLookasideList [text] 915
NPAGED_LOOKASIDE_LIST [text] 915
POOL_RAISE_IF_ALLOCATION_FAILURE [text] 916
Low resource simulation [text] 493
Low speed
cable length [text] 1383
HID [text] 1454, 1458
endpoints [text] 1460
USB [text] 1349, 1351-1354
Low-level driver [text] 99, 130-1149
Lower [text] 1185
Mailing lists [text] 1628
Mailslot
IRP_MJ_CREATE_MAILSLOT [text] 65
MajorFunciton
DRIVER_OBJECT [text] 311, 312
MajorFunction
example [text] 327
handler [text] 336
handlers [text] 322, 337
map
WinDbg [lab] 9
Map file [lab] 8
_NT_KD_FILES [lab] 10, 11
format [lab] 9
illustrated [lab] 20
Map registers [text] 849
DMA_OPERATIONS.FreeMapRegisters [text] 871, 873
mapfile.ini [lab] 10, 11
MAPI [text] 172
Mapped memory I/O [text] 209, 211
MapTransfer [text] 801
DMA_OPERATIONS [text] 871, 873-883
illustrated [text] 891
Marginal design [text] 956
Mason, W. Anthony [text] 1624
Master
DEVICE_DESCRIPTION [text] 854
MasterIrp
IRP [text] 685, 1124
Maximum concurrency value [text] 75
MaximumLatency
PCI_COMMON_CONFIG [text] 1596, 1601
maxmem
BOOT.INI [text] 445
mc
+1 [text] 1052
custom job step [text] 1072
increment [text] 1052
input [text] 1051
Language [text] 1051
message compiler [text] 1050
MessageId [text] 1051
output [text] 1058, 1059
Severity [text] 1051
SymbolicName [text] 1051
MDI [text] 1285, 1286
MDL [text] 800
.ByteCount
illustrated [text] 813
.ByteOffset
illustrated [text] 813
.MappedSystemVa
illustrated [text] 813
.StartVa
illustrated [text] 813
creation [text] 816
driver [text] 812
I/O Manager [text] 812
Direct I/O [text] 819
direct I/O [text] 659
DMA_OPERATIONS.MapTransfer [text] 883
DPC [text] 799
illustrated [text] 802-811, 813
IoAllocateMdl [text] 816, 824
IoBuildPartialMdl [text] 825, 1447
IoMapTransfer [text] 1551
IRP.MdlAddress [text] 685, 686
example [text] 661, 662
ISR [text] 799
MmGetMdlByteCount [text] 815
MmGetMdlByteCount*PHRASE=MmGetMdlByteOffset [text] 827
MmGetMdlByteOffset [text] 815, 827
MmGetMdlSze [text] 814
MmGetSystemAddressForMdl [text] 659, 826
MmGetSystemAddressForMdlSafe [text] 659, 814-826
example [text] 661, 662
illustrated [text] 808
MmInitializeMdl [text] 817
MmIsAddressValid [text] 826
MmPrepareMdlForReuse [text] 817
MmProbeAndLockPages [text] 801, 815-821
illustrated [text] 807
MmSizeOfMdl [text] 827
Neither I/O [text] 670
opaque data type [text] 814
partial [text] 816, 822-824
rationale [text] 799
usage [text] 630, 632
using [text] 801
MdlAddress
example [text] 661, 662
IRP [text] 685, 686
Memory [text] 191
bus relative [text] 253
HalTranslateBusAddress [text] 254-256
mapped [text] 32
paged [text] 32
special memory pool [text] 491
system relative [text] 253
HalTranslateBusAddress [text] 254-256
virtual [text] 32
Memory allocation
ExAllocatePool [text] 907, 1221
example [text] 572
ExAllocatePoolWithTag [text] 911
ExFreePool [text] 574, 913
example [text] 585, 1226
ExFreePoolWithTag [text] 913
Memory bus
illustrated [text] 188
Memory Descriptor List
see MDL [text] 800
Memory fence [text] 304
Memory map
32-bit [text] 156, 157
64-bit [text] 158
illustrated [text] 156-158, 803-813
Memory pool tracking [text] 494
MessageId
mc [text] 1051
MESSAGETABLE [text] 362, 1050-1059
%n [text] 1065-1068
examining [text] 1062
illustrated [text] 1037
usage [text] 1064
METHOD_BUFFERED [text] 652, 653
METHOD_IN_DIRECT [text] 652, 653, 660
METHOD_NEITHER [text] 652, 653
METHOD_OUT_DIRECT [text] 660
METHOD_OUT_DIRECT*PHRASE=CTL_CODE
METHOD_OUT_DIRECT [text] 652, 653
MFC [text] 1277-1280, 1282
adding controls [text] 1297-1300
Afx [text] 1281
AppWizard [text] 1284, 1285
illustrated [text] 1290-1296
CButton [text] 1283
CDialog [text] 1283
CFrameWnd [text] 1283
classes [text] 1283
ClassWizard [text] 1289, 1302, 1303
illustrated [text] 1304-1314, 1317
CScrollView [text] 1283
CView [text] 1283
dialog-based app [text] 1287
efficiency [text] 1316
illustrated [text] 1288
MDI [text] 1286
SDI [text] 1286
MFC framework [text] 1301
illustrated [text] 1315
MFENCE [text] 304
Microseconds
KeStallExecutionProcessor [text] 925
Microsoft
symbol server [lab] 11
microsoft.public
ddk.win2000
acpi [text] 1626
bus.technologies [text] 1626
comm [text] 1626
debugging [text] 1626
display [text] 1626
general [text] 1626
input [text] 1626
modem [text] 1626
multimedia [text] 1626
network [text] 1626
printer.video [text] 1626
printers [text] 1626
setup [text] 1626
storage [text] 1626
development.device.drivers [text] 1626
win2000
hardware [text] 1626
win32.programmer
kernel [text] 1626
MIMD [text] 26
Minidriver [text] 1151
illustrated [text] 1153
Minidump [text] 470
crash dump analysis [text] 473
selecting [text] 472
MinimumGrant
PCI_COMMON_CONFIG [text] 1596, 1601
Miniport
display [text] 119
illustrated [text] 116
driver [text] 99-102, 132
illustrated [text] 103
Hidgame [text] 1480, 1485
Hidusb [text] 1480, 1485
NDIS
illustrated [text] 111, 112
SCSI [text] 125-128
illustrated [text] 123, 124
MM_LOWEST_SYSTEM_ADDRESS [text] 1324
MmGetMdlByteCount [text] 815, 827
MmGetMdlByteOffset [text] 815
MmGetMdlSize [text] 814
MmGetSystemAddressForMdl [text] 659, 826
MmGetSystemAddressForMdlSafe [text] 659, 818-826
example [text] 661, 662
illustrated [text] 808
MmGetSystemAddressForMldSafe [text] 814
MmInitializeMdl [text] 817
MmIsAddressValid [text] 826
MmLockPagableCodeSection [text] 1531, 1532
MmLockPagableDataSection [text] 1531
MmLockPagableSectionsByHandle [text] 1532
MmPageEntireDriver [text] 1536
MmPrepareMdlForReuse [text] 817
MmProbeAndLockPages [text] 801, 815-1244
illustrated [text] 807
MmResetDriverPaging [text] 1536
MmSizeOfMdl [text] 827
MmUnlockPagableImageSection [text] 1532
Mm… [text] 176
Mode
kernel [text] 154
user [text] 154
mof
compiler [text] 1520
illustrated [text] 1521
mofcomp [text] 1520
MSWmi_MofData_GUID [text] 1520
wmicore.mof [text] 1517
Monolithic driver [text] 131, 132, 172
IRP stack [text] 688
Mouclass
HID [text] 1480, 1485
Mouhid
FDO [text] 1480, 1485
Mouse
DirectX [text] 1496
driver [text] 113
HID [text] 1479-1481, 1485
Mouhid [text] 1480, 1485
Sermouse [text] 1480, 1485
mov [text] 267, 280
MSC_WARNING_LEVEL [text] 419
msdl.microsoft.com/
downloads/
symbols [lab] 11
MSDN
documentation [lab] 25
MSWmi_MofData_GUID [text] 1520
multi(n)
BOOT.INI [text] 439, 447
Multicore processor [text] 26, 28
Multiple-reader-single-writer [text] 1015
Multiprocessor [text] 23, 26-28
/onecpu [text] 446
architecture [text] 219, 220
HAL [text] 242, 244
hyperthreading [text] 28
limitations [text] 26
lock [text] 282-287
NUMA [text] 198, 605-607
illustrated [text] 199
safety [text] 282-287
scheduler [text] 30
SMP [text] 27
spin lock [text] 605-607
Multitasking [text] 23, 24
Multithreading [text] 23, 25
cooperative [text] 31
preemptive [text] 31
Mutex [text] 1003, 1008
deadlock detection [text] 498
fast [text] 1003, 1005
fast mutex
comparison [text] 1014
KeInitializeMutex [text] 1009
KeReleaseMutex [text] 1009
KeWaitForMultipleObjects
priority [text] 1020
KeWaitForSingleObject
priority [text] 1020
KMUTEX [text] 1009
owned [text] 1010
synchronization [text] 1004
my_AddDevice [text] 1185
my_PassDownToNextPowerDriver [text] 1217
Myth
portability [text] 38, 39
Nagar, Rajeev [text] 1624
Name
device [text] 548
persistence [text] 554
Name space
object manager [text] 314-317
?? [text] 315
Device [text] 315
DosDevices [text] 315
NDIS
driver [text] 109
illustrated [text] 110-112
intermediate
illustrated [text] 111, 112
miniport
illustrated [text] 111, 112
Nebbett, Gary [text] 1624
neg
lock [text] 287
Neither I/O [text] 632, 670, 671
DeviceIoControl [text] 672
DeviceIoControlEx [text] 672
METHOD_NEITHER [text] 652, 653
ReadFile [text] 671
ReadFileEx [text] 671
WriteFile [text] 671
WriteFileEx [text] 671
net start [lab] 34
net start drivername [text] 461
net stop [lab] 34
net stop drivername [text] 463
Network
debugging port [text] 484
driver [text] 98, 109
illustrated [text] 110-112
Newcomer [text] 191, 1184-1217
Newcomer, Joseph M. [text] 2, 3, 1624
newcomer@flounder.com [text] 2
Next [text] 1185
NextLowerDriver [text] 1185, 1185-1217
No [text] 191
Noise [text] 957
Non [text] 1184, 1184
Non-paged pool [text] 160, 161, 164-905
ExInitializeNPagedLookasideList [text] 915
illustrated [text] 159, 162
NonPagedPool [text] 907
NonPagedPoolCacheAligned [text] 907
Non-Uniform Memory Access
see NUMA [text] 198
NonPagedPool [text] 907
Normal
priority class [text] 87
noserialmice
BOOT.INI [text] 445
not
lock [text] 287
Notification
event [text] 1004
NPAGED_LOOKASIDE_LIST [text] 915
NT Architecture [text] 153
NT system services [text] 175, 176
NT_DEBUG_BAUD_RATE [lab] 10, 11
NT_DEBUG_PORT [lab] 10, 11
NT_KD_FILES [lab] 10, 11
NT_SUCCESS [text] 329
example [text] 330, 398-1096
NT_SYMBOL_PATH [lab] 10, 11
NTDETECT [text] 140, 142
NTFS
illustrated [text] 123, 124
NTSD
debugger [text] 434
NTSTATUS [text] 336, 1217
checking [text] 329
example [text] 326, 395
NULL [text] 1185
Null modem cable [lab] 29
NUMA [text] 198
illustrated [text] 199
queued spin lock [text] 606, 607
Server 2008 [text] 198
spin lock [text] 605
Vista [text] 198
Object
adapter
AdapterControl handler [text] 1547, 1548
IoFreeAdapterChannel [text] 1549
NT4 [text] 1542
controller [text] 787, 788
device [text] 173, 174
DMA_ADAPTER [text] 868, 869
driver [text] 173, 174, 323
illustrated [text] 1186
event [text] 56
File [text] 563
File Object [text] 562
functional device
illustrated [text] 1186
interrupt [text] 173, 174
manager services [text] 175, 176
timer [text] 173, 174
Object extension [text] 344
Object Manager Name Space [text] 314, 316, 317
?? [text] 315, 317, 318
\ [text] 315
Device [text] 315
DosDevices [text] 315
illustrated [text] 315
object viewer [text] 316
OBJECT_ATTRIBUTES [text] 998
Ob… [text] 176
OCA [text] 530-532
analysis [text] 533
cost [text] 535
VeriSign [text] 534
Web sites [text] 536
Winqual [text] 534
oca.microsoft.com/en/windiag.asp [text] 536
OF [text] 274-276
Of [text] 1184
OHCI
USB [text] 1362
OLE [text] 141
onecpu
BOOT.INI [text] 446
Oney, Walter [text] 1624
Opaque
partially-opaque [text] 684
OPEN_EXISTING [text] 53
Operating System [text] 23
defined [text] 33
operating systems
BOOT.INI [text] 438
Optimized code [text] 974, 975
Optimizing compiler [text] 619-623
Options
IO_STACK_LOCATION.Parameters.Create [text] 692
or
lock [text] 287, 294-298
Oscilloscope [text] 958, 960
Other_Speed_Configuration [text] 1478
descriptor (USB) [text] 1365, 1379
OUT [text] 1217
out [text] 217
Output
STATUS [lab] 64
OutputBufferLength
IO_STACK_LOCATION.Parameters.DeviceIoControl [text] 695
Outstanding [text] 1184
OutstandingIO [text] 1184
Overflow [text] 207
OVERLAPPED [text] 69-71, 94
.hEvent [text] 70
.Offset [text] 70
design [text] 550
.OffsetHigh [text] 70
design [text] 550
Overrun
memory [text] 491
OVR [lab] 44
input [lab] 61
PADAPTER_OBJECT [text] 1545
PADDDEVICE [text] 332
PAE [text] 849
Page fault [text] 207
Pageable driver [text] 1529, 1530
code [text] 1533, 1534
data [text] 1535
ISR [text] 1537
MmLockPagableCodeSection [text] 1531, 1532
MmLockPagableDataSection [text] 1531
MmLockPagableSectionsByHandle [text] 1532
MmPageEntireDriver [text] 1536
MmResetDriverPaging [text] 1536
MmUnlockPagableImageSection [text] 1532
Paged
memory [text] 32
Paged pool [text] 160, 161, 905
illustrated [text] 159, 162
PagedPool [text] 907
PagedPoolCacheAligned [text] 907
PagedPool [text] 907
Parameters
ebp [text] 270
IO_STACK_LOCATION
.Create [text] 692
.DeviceIoControl [text] 695
.Read [text] 693
.Write [text] 694
stack [text] 269
Partial MDL [text] 822-824
DMA [text] 822
IoBuildPartialMdl [text] 816, 825
USB [text] 822
partition(n)
BOOT.INI [text] 441, 447
Pass-through [text] 1172, 1173
power [text] 1217
Passing [text] 1217
Passive
prioirty [text] 177, 178
PASSIVE_LEVEL
exception handler [text] 1248-1251
ExRaiseStatus [text] 1249
thread [text] 1004
PC architecture [text] 190
PCI [text] 245, 1569
BaseAddress [text] 1582-1584
BaseClass [text] 1579, 1580
BIOS [text] 1585
BIST [text] 1572, 1581
bridge [text] 1585
bus analyzer [text] 961, 962
bus segment [text] 190
bus segments [text] 1590
illustrated [text] 1586
BusNumber [text] 855
command register [text] 1572, 1574, 1575
configuration [text] 1570
configuration space [text] 1571-1573
device numbers [text] 1591
DeviceID [text] 1572, 1578
enumeration [text] 1593, 1594, 1602-1604
extender card [text] 965
function numbers [text] 1592
HAL [text] 1587
HalAssignSlotResources [text] 1589
HalGetBusData [text] 1588
HalGetBusDataByOffset [text] 1588
mapping
illustrated [text] 1586
status register [text] 1572, 1576, 1577
SubSystemID [text] 1578
SubVendorID [text] 1578
VendorID [text] 1572, 1578
WDM [text] 1147
PCI architecture [text] 190
PCI System Architecture [text] 1625
PCI+ [text] 205
PCI-X [text] 205
PCI-X System Architecture [text] 1625
PCI_BRIDGE_TYPE
PCI_COMMON_CONFIG [text] 1596
PCI_COMMON_CONFIG [text] 1596-1601
HalGetBusData [text] 1588
HalGetBusDataByOffset [text] 1588
PCI_DEVICE_TYPE
PCI_COMMON_CONFIG [text] 1596
PCI_MULTIFUNCTION
PCI_COMMON_CONFIG [text] 1596
PCI_SLOT_NUMBER [text] 1595
PCMCIA [text] 245, 1499
CardBus [text] 1500, 1501
enumeration [text] 1505
tool [text] 1504
PCONTROLLER_OBJECT
IoAllocateController [text] 790
IoCreateController [text] 789
PCSTR [text] 324
PCWSTR [text] 324
PDEVICE_OBJECT [text] 1217
example [text] 326, 395
PDMA_ADAPTER [text] 876
PDO [text] 1157
illustrated [text] 1160, 1171-1186
Serenum [text] 1480, 1485
Pdo [text] 1185
PDRIVER_CANCEL [text] 713, 742, 743
PDRIVER_CONTROL [text] 790, 876-1546
controller object [text] 791, 793
PDRIVER_DISPATCH [text] 332
PDRIVER_EXTENSION [text] 332
PDRIVER_STARTIO [text] 332
PDRIVER_UNLOAD [text] 332
Pending
IoMarkIrpPending [text] 1133, 1137-1139
example [text] 644, 661
IRP.PendingReturned [text] 686
PendingReturned
IRP [text] 1200
STATUS_PENDING [text] 1133, 1137-1199
PendingReturned
IRP [text] 685, 686, 1200
Pentium 4 [text] 28
Pentium Pro and Pentium II System Architecture [text] 1625
Pentium Pro Processor System Architecture [text] 1625
Pentium Processor System Architecture [text] 1625
Performance
I/O [text] 216
portability [text] 41
Performance measurement [text] 974, 975
Performance timer [text] 944
KeQueryPerformanceCounter [text] 945-948
Persistence
device name [text] 554
PEXCEPTION_POINTERS [text] 1264
PEXECPTION_POINTERS [text] 1256
PF [text] 274-276
PFILE_OBJECT
example [text] 569-582, 584, 585
Physical address [text] 165
DMA [text] 167, 832
DMA_OPERATIONS.MapTransfer [text] 871, 873
Physical Device Object
see PDO [text] 1157
Physical memory [text] 164
illustrated [text] 803-807, 809-813
on-card [text] 168
PIO_COMPLETION_ROUTINE [text] 1129
PIO_CSQ
example [text] 1613-1615, 1621, 1622
PIO_DPC_ROUTINE [text] 774, 777
PIO_ERROR_LOG_PACKET [text] 1084, 1087
PIO_STACK_LOCATION [text] 690
example [text] 569-574, 577-1615
PIO_TIMER_ROUTINE [text] 930
PIO_WORKITEM [text] 995
PIO_WORKITEM_ROUTINE [text] 995
Pipe
_URB_BULK_OR_INTERRUPT_TRANSFER [text] 1408
_URB_PIPE_REQUEST [text] 1401, 1410-1412
URB_FUNCTION_ABORT_PIPE [text] 1401
URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER [text] 1408
URB_FUNCTION_RESET_PIPE [text] 1410
URB_FUNCTION_SYNC_CLEAR_STALL [text] 1412
URB_FUNCTION_SYNC_RESET_PIPE [text] 1411
USB [text] 1358
Pipeline
portability [text] 42
PIRP [text] 1217
PKDPC [text] 777
PKINTERRUPT [text] 766-769
PKSTART_ROUTINE [text] 998
Plug-and-Play [text] 1162, 1163, 1189, 1190
AddDevice [text] 312, 313, 321
driver size [text] 1448-1450
DriverEntry [text] 313
IRP_MJ_PNP [text] 65, 312-1180
IRP_MN_REMOVE_DEVICE [text] 320, 321
IRP_MN_START_DEVICE [text] 320, 321
IRP_MN_STOP_DEVICE [text] 320, 321
IRP_MJ_POWER [text] 65
power management [text] 1155
unload [text] 335
PMY_FDO_EXTENSION [text] 1217
POBJECT_ATTRIBUTES [text] 998
PoCallDriver [text] 1164, 1211-1217
example [text] 1217, 1225
Vista [text] 1211
POINTER_32 [text] 1329
POINTER_64 [text] 1329
Pool
driver verifier
tracking [text] 494
non-paged [text] 160, 161
illustrated [text] 159, 162
paged [text] 160, 161
illustrated [text] 159, 162
special [text] 491
tracking [text] 494
POOL_RAISE_IF_ALLOCATION_FAILURE [text] 916
PoolTag [text] 541
allocation [text] 910
ExAllocatePoolWithTag [text] 911
ExFreePoolWithTag [text] 913
pop [text] 268
popf [text] 268
Port
BaseAddress [text] 1584
driver [text] 99-102
illustrated [text] 103
SCSI [text] 127
video
XP [text] 1321
Portability
myth [text] 38
performance [text] 41
PoSetPowerState
example [text] 1224, 1230
PoStartNextPowerIrp [text] 1211, 1213-1217
example [text] 1217, 1218, 1226-1230
PostMessage [text] 92, 93
PostQueuedCompletionStatus [text] 79, 81
Power [text] 1162, 1217
completion routine [text] 1227-1230
context [text] 1220-1222
GUID_POWER_DEVICE_ENABLE [text] 1522
Interface_Power (USB) [text] 1365, 1380
IO_STACK_LOCATION.Parameters.Power [text] 1168
IRP_MJ_POWER [text] 65, 338-1212
handler [text] 1225
manager services [text] 175, 176
pass-through [text] 1217
Plug-and-Play [text] 1155
PoCallDriver [text] 1164, 1211-1217
example [text] 1225
Vista [text] 1211
PoSetPowerState
example [text] 1224, 1230
PoStartNextPowerIrp [text] 1211, 1213
example [text] 1217, 1218, 1226-1230
states [text] 1165, 1166
SystemPowerState [text] 1222
Power management
setting power state [text] 1219
Power state
D0 [text] 1165
required [text] 1166
D1 [text] 1165
optional [text] 1166
D2 [text] 1165
optional [text] 1166
D3 [text] 1165
required [text] 1166
device [text] 1165
setting [text] 1219
system [text] 1165
PowerDevice0
example [text] 1224
Po… [text] 176
PPCI_COMMON_CONFIG [text] 1601
Preemption
scheduler [text] 31
Preemptive [text] 23
PREfast [text] 507, 508
running [text] 509
Printer
driver [text] 122
illustrated [text] 121
language monitor [text] 122
illustrated [text] 121
port monitor [text] 122
illustrated [text] 121
spooler [text] 122
illustrated [text] 121
Priority
APC [text] 177, 178
boost [text] 354, 356-359
DIRQL [text] 177-179
DISPATCH [text] 177, 178
illusrtrated [text] 178
illustrated [text] 177
KeSetBasePriorityThread [text] 996, 997, 1001
KeSetPriorityThread [text] 996, 997, 1000
passive [text] 177, 178
Priority-scheduled [text] 23, 30
Process
accessing [text] 630
defined [text] 35
file locks owned by [text] 35
handles owned by [text] 35
memory owned by [text] 35
Process map
dispatch handler [text] 166, 167
DPC [text] 166, 167
ISR [text] 166, 167
Processor [text] 191
multicore [text] 26, 28
ProductID
HID [text] 1463
PRODUCTVERSION [text] 983
ProfIf
PCI_COMMON_CONFIG [text] 1600
ProgIf
PCI_COMMON_CONFIG [text] 1596
Programmed I/O [text] 209, 210
Programming the Microsoft Windows Driver Model [text] 1624
Prolog [text] 270
PROTECTED_POOL*PHRASE=Tag
PROTECTED_POOL [text] 913
Provider
WMI [text] 1523
PsCreateSystemThread [text] 996-998
PsTerminateSystemThread [text] 996, 997, 999
PSTR [text] 324
Ps… [text] 176
PtrToInt [text] 1330
PtrToLong [text] 1330
PtrToShort [text] 1330
PtrToUlong [text] 1330
PtrToUshort [text] 1330
PUNICODE_STRING
illustrated [text] 325
PURB
defined [text] 1392
push [text] 268
pushf [text] 268
PutDmaAdapter
DMA_OPERATIONS [text] 871, 872
PutScatterGatherList
DMA_OPERATIONS [text] 871, 873-886
PWSTR [text] 324
Q103059
KB article [text] 467
Quantum [text] 355
scheduler [text] 88
Queue
ADAPTER_OBJECT [text] 719
cancel-safe [text] 723, 1607-1619
canceling [text] 1621, 1622
inserting [text] 1613
IO_CSQ [text] 1608, 1614, 1615
IoCsqInitialize [text] 1610, 1611, 1620
IoCsqInsertIrp [text] 1607, 1608
IoCsqRemoveIrp [text] 1607
IoCsqRemoveNextIrp [text] 1607, 1608
locking [text] 1612
peeking [text] 1615-1618
removing [text] 1614
CONTROLLER_OBJECT [text] 720
CriticalWorkQueue [text] 995
CurrentIrp [text] 706
custom [text] 702, 721, 722
DelayedWorkQueue [text] 995
ExInterlockedInsertHeadList [text] 728, 733
ExInterlockedInsertTailList [text] 728, 733
ExInterlockedRemoveHeadList [text] 728, 733
illustrated [text] 732
FIFO [text] 704
HyperCriticalWorkQueue [text] 995
InitializeListHead [text] 725, 733
InsertHeadList [text] 733
InsertTailList [text] 733
cancel-safe [text] 1613
IoQueueWorkItem [text] 994, 995
IoStartNextPacket [text] 705, 715-782
IoStartPacket [text] 704, 705, 713-717
IRP [text] 679, 701, 702
illustrated [text] 730, 731
IRP.Tail.Overlay
.DeviceQueueEntry [text] 685
IsListEmpty [text] 733
KeRemoveEntryDeviceQueue [text] 746
LIST_ENTRY [text] 725, 729
illustrated [text] 724, 730, 731
non-FIFO [text] 701
none [text] 703
RemoveEntryList [text] 733
cancel-safe [text] 1614
RemoveHeadList [text] 733
RemoveTailList [text] 733
StartIo [text] 704, 711, 712
illustrated [text] 707-709
system worker thread [text] 1002
Tail.Overlay
.ListEntry
illustrated [text] 732
Queued spin lock
NUMA [text] 606, 607
r8..r15
64-bit [text] 265
r8b..r15b
8-bit [text] 265
r8d..r15d
32-bit [text] 265
r8w..r15w
16-bit [text] 265
RaiseException [text] 1247, 1258
rdisk(n)
BOOT.INI [text] 440
Read
IO_STACK_LOCATION
.Parameters [text] 693
speculative [text] 300
READ_PORT_BUFFER_UCHAR [text] 248, 250
READ_PORT_BUFFER_ULONG [text] 248, 250
READ_PORT_BUFFER_USHORT [text] 248, 250
READ_PORT_UCHAR [text] 247
using [text] 251, 252
READ_PORT_ULONG [text] 247
using [text] 251, 252
READ_PORT_USHORT [text] 247
using [text] 251, 252
READ_REGISTER_BUFFER_UCHAR [text] 248, 249
READ_REGISTER_BUFFER_ULONG [text] 248, 249
READ_REGISTER_BUFFER_USHORT [text] 248, 249
READ_REGISTER_UCHAR [text] 247
using [lab] 42, [text] 251, 252
READ_REGISTER_ULONG [text] 247
using [text] 251, 252
READ_REGISTER_USHORT [text] 247
using [text] 251, 252
ReadDirectoryChangesW [text] 48, 79
ReadDmaCounter
DMA_OPERATIONS [text] 871, 873
ReadFile [text] 48, 60-66
asynchronous [text] 94
buffered [text] 634, 637, 638
illustrated [text] 639-642
design [text] 550
direct [text] 658
handler [text] 322
I/O Completion Port [text] 79
IO_STACK_LOCATION
.Parameters
.Read [text] 693
IRP_MJ_READ [text] 65, 338
synchronous [text] 89
ReadFileEx [text] 48, 57-72
buffered [text] 634, 637, 638
illustrated [text] 639-642
direct [text] 658
handler [text] 322
IRP_MJ_READ [text] 65, 338
Real-time
hard [text] 44
not [text] 43
priority class [text] 87
soft [text] 44
Reboot
.reboot [text] 464
Rebuild [text] 415
Rebuild all [text] 415
Rector, Brent E. [text] 3, 1624
Recursive acquisition [text] 1010
Reference [text] 1184
Reference count
IRP [text] 1182, 1183
decrementer [text] 1188
incrementer [text] 1187
REG_BINARY [text] 145, 1092
REG_DWORD [text] 145, 1092
REG_EXPAND_SZ [text] 145, 1092
REG_MULTI_SZ [text] 145, 1092
REG_SZ [text] 145, 1092
RegCreateKey [text] 1046
REGEDIT4 [text] 452
Register
base [text] 279
dump [text] 476
illustrated [text] 263, 264
index [text] 279
Register architecture [text] 261
RegisterEventSource [text] 1043-1045
Registers [text] 191
Registry [text] 140
boot time availability [text] 149
BreakOnEntry [text] 457
DebugMask [text] 457
DisplayName [text] 453, 454
driver [text] 146
ErrorControl [text] 455
Event Log [text] 1045
Group [text] 455
hardware [text] 142
helloworld.reg [lab] 31
HKEY_LOCAL_MACHINE
HARDWARE [text] 142
ImagePath [text] 453
installation keys [text] 456
IoOpenDeviceInterfaceRegistryKey [text] 555
LogEvents [text] 457
NTDETECT [text] 142
operations [text] 144
permanent entries [text] 1098
REG_BINARY [text] 145
REG_DWORD [text] 145
REG_EXPAND_SZ [text] 145
REG_MULTI_SZ [text] 145
REG_SZ [text] 145
RegCreateKey [text] 1046
RegSetValueEx [text] 1046
RTL_QUERY_REGISTRY_DIRECT [text] 1095
RTL_REGISTRY_QUERY_TABLE [text] 1094
RtlQueryRegistryValues [text] 1093, 1096
Start [text] 455
transient entries [text] 1098
Type [text] 455
RegSetValueEx [text] 1046
Remote debugging [text] 425-427
illustrated [text] 432
Remove [text] 1184
Remove event
KeSetEvent [text] 1188
RemoveEntryList [text] 733
cancel-safe-queue [text] 1614
RemoveEvent [text] 1184
RemoveHeadList [text] 733
RemoveTailList [text] 733
Report
HID [text] 1490-1493
ReportEvent [text] 1043, 1047-1068
Requests [text] 1217
Reserved [text] 191, 1184-1217
PCI_SLOT_NUMBER [text] 1595
RESET
input [lab] 62
output [lab] 65, 67
Resource
examining [text] 1060-1063
ret [text] 268, 270
Retail Build
driver [text] 372
kernel [text] 370
Return [text] 1185, 1185-1217
Return address [text] 269
Rev.2007.12 [text] 191, 1184-1217
RevisionID
PCI_COMMON_CONFIG [text] 1596
Rights [text] 191, 1184-1217
Ring 0 [text] 154
Ring 3 [text] 154
rip
64-bit [text] 266
RISC
architecture [text] 192
ROMBaseAddress
PCI_COMMON_CONFIG [text] 1598, 1601
RTL services [text] 175, 176
RTL_QUERY_REGISTRY_DIRECT [text] 1095
RTL_REGISTRY_ABSOLUTE [text] 1096
RTL_REGISTRY_OPTIONAL [text] 1096
RTL_REGISTRY_QUERY_TABLE [text] 1094
RtlCopyMemory [text] 1340
RtlInitUnicodeString [text] 325
example [text] 328, 330-402
RtlQueryRegistryValues [text] 1093, 1096
RtlZeroMemory [text] 1094
Rtl… [text] 176
Run-time library services [text] 175, 176
Russinovich, Mark [text] 1624
Sample® [text] 985
sbb
lock [text] 287
Scaled addressing [text] 280
Scatter-Gather [text] 861
defined [text] 858
DEVICE_DESCRIPTION
.ScatterGather [text] 854
DMA_OPERATIONS.GetScatterGatherList [text] 871, 873-885
DMA_OPERATIONS.PutScatterGatherList [text] 871, 873-886
efficiency [text] 860
emulation [text] 862, 863
hardware [text] 864
types [text] 859
Scheduler [text] 86
priority [text] 87, 177, 178
Scheduling
algorithm [text] 30
preemption [text] 31, 34
priority [text] 30
thread [text] 25
SCM [text] 24
Screen buffer size [lab] 17-19
scsci(n)
BOOT.INI [text] 439
SCSI
bus analyzer [text] 961, 962
disk class driver
illustrated [text] 689
driver [text] 125, 126
illustrated [text] 123, 124
miniport [text] 125-128
illustrated [text] 123, 124
miniport driver
illustrated [text] 106-108, 689-1117
port driver [text] 127
illustrated [text] 106-108, 689-1117
SCSI Request Block (SRB) [text] 125
SRB [text] 125
verification [text] 499
SCSI Verification [text] 499
SDI [text] 1285, 1286
Security
C2 [text] 16
event log [text] 1033
reference monitor [text] 175, 176
SecurityContext
IO_STACK_LOCATION.Parameters.Create [text] 692
Segment register [text] 279
SEH
see Exception handler [text] 1235
Semaphore [text] 1003, 1004, 1006
KeInitializeSemaphore [text] 1007
KeReleaseSemaphore [text] 1007
KSEMAPHORE [text] 1007
SEMAPHORE_INCREMENT [text] 357
Serenum
PDO [text] 1480, 1485
Serial cable [lab] 29
Serial number
HID [text] 1463
Serial port
driver [text] 113, 114
legacy [text] 481, 482
Sermouse
HID [text] 1480, 1485
Server
limitations [text] 26
SERVICE_DEMAND_START [text] 452, 455
SERVICE_ERROR_NORMAL [text] 452, 455
SERVICE_KERNEL_DRIVER [text] 452, 455
Services
executive [text] 175, 176
I/O Manager [text] 176
kernel [text] 175, 176
NT system [text] 175, 176
object manager [text] 175, 176
power manager [text] 175, 176
RTL [text] 175, 176
run-time library [text] 175, 176
security [text] 175, 176
SetEndOfFile [text] 48
SetFilePointer [text] 48
SetFilePointerEx [text] 83, 84
setjmp [text] 1235
Settings
advanced [lab] 12
SetupDiDestroyDeviceInfoList [text] 557
SetupDiEnumDeviceInterfaces [text] 557
HID [text] 1488, 1489
SetupDiGetClassDevs [text] 557
HID [text] 1488, 1489
SetupDiGetDeviceInterfaceDetail [text] 557
HID [text] 1488, 1489
Severity
error code [text] 361, 1053-1259
mc [text] 1051
Se… [text] 176
SF [text] 274-276
SFENCE [text] 304
Shanley, Tom [text] 1625
ShareAccess
IO_STACK_LOCATION.Parameters.Create [text] 692
Shared interrupt [text] 203
Sharing
exclusive [text] 52
FILE_SHARE_DELETE [text] 52
FILE_SHARE_READ [text] 52
FILE_SHARE_WRITE [text] 52
Shortcut
WinDbg [lab] 4, 5
Shutdown notification [text] 1273, 1274
IoRegisterShutdownNotification [text] 1274
IRP_MJ_SHUTDOWN [text] 65
Signaled [text] 1184, 1184
Signed driver [text] 1342-1345
Simulator
documentation [lab] 25
hardware [lab] 41, 42, 48
control panel [lab] 49, 50
Get State button [lab] 42, 44-68
starting [lab] 68
Single-writer-multiple-reader [text] 1015
Size
DMA_OPERATIONS [text] 871, 872
SIZE_T [text] 1328
Skip [text] 191
Sleep
KeDelayExecutionThread [text] 926, 927
SleepEx [text] 57, 73
SMSS [text] 24
Snooping
cache [text] 231, 232
Solomon, David A. [text] 1624
sos
BOOT.INI [text] 446, 447
SOURCES [text] 409, 411
.rc [text] 986
C_DEFINES [text] 513
DEPRECATE_DDK_FUNCTIONS [text] 513
MSC_WARNING_LEVEL [text] 419
SOURCES= [text] 410
TARGETLIBS= [text] 410
TARGETNAME= [text] 410
TARGETPATH= [text] 410, 414
TARGETTYPE= [text] 410
VERIIFIER_DDK_EXTENSIONS [text] 515
SOURCES= [text] 410
Special [text] 191
Special memory pool [text] 491
Speculative read [text] 218, 300-977
Spew
kernel [text] 371
Spin lock [text] 594
call usage verifier [text] 518
cancel [text] 741, 742, 747, 748
IoAcquireCancelSpinLock [text] 742
IoReleaseCancelSpinLock [text] 747, 748
classic [text] 595
NUMA [text] 605
deadlock detection [text] 498
DISPATCH_LEVEL [text] 599
improper use [text] 490
interrupt [text] 755, 759-765
illustrated [text] 892, 1557
ISR
illustrated [text] 754
KeAcquireInStackQueuedSpinLock [text] 603, 604
KeAcquireInStackQueuedSpinLockAtDpcLevel [text] 603
KeAcquireSpinLockAtDpcLevel [text] 601
KeAcqureSpinLock [text] 598
KeInitailizeSpinLock [text] 603
KeInitializeSpinLock [text] 596
KeReleaseInStackQueuedSpinLock [text] 603, 604
KeReleaseInStackQueuedSpinLockAtDpcLevel [text] 603
KeReleaseSpinLock [text] 600
KeReleaseSpinLockAtDpcLevel [text] 601
KeSynchronizeExecution [text] 599
KLOCK_QUEUE_HANDLE [text] 604
KSPIN_LOCK [text] 596, 603
limitations [text] 599, 602
queued [text] 595, 603
KLOCK_QUEUE_HANDLE [text] 604
NUMA [text] 606, 607
starvation [text] 602
video miniport [text] 1321
visual [text] 597
Spin wait [text] 924
Spooler [text] 122
illustrated [text] 121
SRB [text] 125, 127
SRV* [lab] 11
SS [text] 279
SSIZE_T [text] 1328
Stack
call [text] 268
epilog [text] 270
esp [text] 266
illustrated [text] 269
illustrated [text] 269
pop [text] 268
popf [text] 268
prolog [text] 270
push [text] 268
pushf [text] 268
ret [text] 268
rsp [text] 266
SS [text] 279
switch [text] 490
Stack backtrace [text] 477
Stack overflow [text] 468
StackSize
IRP [text] 1108
STANDARD_RIGHTS_READ [text] 51
STANDARD_RIGHTS_WRITE [text] 51
Start
HKLM\...\Services\drivername [text] 452
Registry [text] 455
StartIo [text] 704, 711
cancel [text] 744
cancel spin lock [text] 741, 742, 747, 748
DEVICE_OBJECT.CurrentIrp [text] 706
DRIVER_OBJECT [text] 327
.DriverStartIo [text] 332
handler [text] 712, 718
illustrated [text] 707-709
IoStartNextPacket [text] 705, 715-782
illustrated [text] 894-896, 1559-1561
IoStartPacket [text] 704, 705, 713-717
illustrated [text] 889, 896-1561
queue [text] 702
Starvation
spin lock [text] 602
State
IO_STACK_LOCATION.Parameters.Power [text] 1168
per-handle [text] 562
shared [text] 344
static
never used [text] 344
STATUS
BUSY
output [lab] 64
DONE
input [lab] 61, 63
output [lab] 64, 66
EOP
input [lab] 61, 63
ERR
input [lab] 61, 63
output [lab] 64, 66
input [lab] 60, 61, 63
INT
input [lab] 61
output [lab] 64
output [lab] 60, 64
OVR
input [lab] 61
UND
output [lab] 64, 66
Status [text] 1217, 1217
_URB_CONTROL_GET_STATUS_REQUEST [text] 1392, 1425-1428
PCI_COMMON_CONFIG [text] 1598, 1600
URB_FUNCTION_GET_STATUS_FROM_DEVICE [text] 1425
URB_FUNCTION_GET_STATUS_FROM_ENDPOINT [text] 1427
URB_FUNCTION_GET_STATUS_FROM_INTERFACE [text] 1426
URB_FUNCTION_GET_STATUS_FROM_OTHER [text] 1428
STATUS_ACCESS_VIOLATION [text] 1250
STATUS_BUFFER_OVERFLOW [lab] 47, [text] 363
STATUS_BUFFER_TOO_SMALL [lab] 47, [text] 363, 364
STATUS_CANCELLED [text] 746, 1621, 1622
STATUS_DATA_ERROR [lab] 47, [text] 363
STATUS_DATA_LATE_ERROR [lab] 47, [text] 363
STATUS_DATA_OVERRUN [lab] 47, [text] 363
STATUS_DATATYPE_MISALIGNMENT [text] 1251
STATUS_DELETE_PENDING [text] 1191, 1213
STATUS_DEVICE_CONFIGURATION_ERROR [lab] 47, [text] 363
STATUS_INSUFFICIENT_RESOURCES [lab] 47, [text] 363, 572-1185
STATUS_INVALID_BUFFER_SIZE [lab] 47, [text] 363
STATUS_INVALID_DEVICE_REQUEST [lab] 47, [text] 363
STATUS_INVALID_DEVICE_STATE [lab] 47, [text] 363
STATUS_INVALID_PARAMETER [lab] 47, [text] 363, 571-574
STATUS_IO_DEVICE_ERROR [lab] 47, [text] 363
STATUS_MORE_PROCESSING_REQUIRED [text] 1111, 1130-1201
STATUS_NO_MEMORY [text] 1221
STATUS_NOT_IMPLEMENTED [lab] 47, [text] 363
STATUS_PENDING [lab] 47, [text] 353, 661-1199
example [text] 637
IRP.PendingReturned [text] 685
STATUS_SUCCESS [lab] 47, [text] 353, 359-1185
example [text] 400, 401
STATUS_UNSUCCESSFUL [lab] 47, [text] 363
std [text] 277
Stop [text] 1184
Stop event
KeClearEvent [text] 1187
KeSetEvent [text] 1188
StopEvent [text] 1184
Streaming driver [text] 133, 135
illustrated [text] 134
String
descriptor
HID [text] 1468
descriptor (USB) [text] 1365, 1376, 1377
movs [text] 277
REG_EXPAND_SZ [text] 145, 1092
REG_MULTI_SZ [text] 145, 1092
REG_SZ [text] 145, 1092
sub
lock [text] 287
SubClass
PCI_COMMON_CONFIG [text] 1596
Subclass
PCI_COMMON_CONFIG [text] 1600
SubSystemID
PCI_COMMON_CONFIG [text] 1598, 1601
SubVendorID
PCI_COMMON_CONFIG [text] 1598, 1601
support.microsoft.com/
ddk [text] 1627
Swift, Jonathon [text] 39
Symbol server [lab] 11
Symbolic link
IoCreateSymbolicLink [text] 330
IoDeleteSymbolicLink [text] 334
example [text] 402
SymbolicName
mc [text] 1051
Symbols
_NT_SYMBOL_PATH [lab] 10, 11
kernel [lab] 7, [text] 448, 449
path [lab] 7
Symmetric Multiprocessing [text] 27
SyncCritSect [text] 183
Synchronization [text] 589, 593
cancel spin lock [text] 741, 742, 747
cancel-safe queue [text] 1612
canonical order [text] 616, 617
correct [text] 592
deadlock [text] 614-616
event [text] 1003, 1004, 1011, 1012
ExAcquireFastMutex [text] 1013
ExAcquireFastMutexUnsafe [text] 1013
ExAcquireResourceExclusiveLite [text] 1016
ExAcquireResourceSharedLite [text] 1016
ExAcquireSharedStartExclusive [text] 1019
ExAcquireSharedWaitForExclusive [text] 1019
ExConvertExclusiveToSharedLite [text] 1019
executive resource [text] 1003, 1005-1016
ExInterlockedInsertHeadList [text] 728
ExInterlockedInsertTailList [text] 728
ExInterlockedRemoveHeadList [text] 728
ExReleaseFastMutex [text] 1013
ExReleaseFastMutexUnsafe [text] 1013
failure [text] 590, 591
fast mutex [text] 1003, 1005-1013
IoAcquireCancelSpinLock [text] 742
IoReleaseCancelSpinLock [text] 745, 746
KeAcquireSpinLock [text] 598
KeInitializeSpinLock [text] 596
KeReleaseSpinLock [text] 600
KeSynchronizeExecition
illustrated [text] 891, 1556
KeSynchronizeExecution [text] 599, 608-1003
illustrated [text] 896, 1561
KeWaitForMultipleObjects [text] 1020
KeWaitForSingleObject [text] 1020
KSPIN_LOCK [text] 596
multiple-reader-single-writer [text] 1015
mutex [text] 1003, 1004, 1008, 1009
need [text] 589
non-exclusive [text] 1015
queued spin lock [text] 603, 604
required [text] 344
semaphore [text] 1003, 1004, 1006, 1007
spin lock [text] 594, 595, 597-1003
limitations [text] 599, 602
SynchronizationEvent [text] 1184, 1184
SYNCHRONIZE [text] 51, 51
Synchronize
SynchronizationEvent [text] 1196
Synchronous I/O [text] 54
CancelSynchronousIo [text] 338
DPC [text] 775
I/O Manager [text] 170
System address [text] 167
System DMA [text] 214, 216-841
illustrated [text] 842-848
System mask
DbgPrintEx [text] 380
System Properties [text] 471
System worker thread [text] 1002
CriticalWorkQueue [text] 995
DelayedWorkQueue [text] 995
HyperCriticalWorkQueue [text] 995
SystemBuffer [text] 634, 635
example [text] 643
IRP [text] 685, 686, 1124
SystemContext
IO_STACK_LOCATION.Parameters.Power [text] 1168
SystemPowerState [text] 1228
Tag
allocation [text] 910
ExAllocatePoolWithTag [text] 911
ExFreePoolWithTag [text] 913
Tail.Overlay
.DeviceQueueEntry [text] 746
IRP [text] 685
.ListEntry [text] 729, 1613-1617
illustrated [text] 732
IRP [text] 685
TAPI [text] 172
Target
configuration [text] 430
illustrated [text] 432
TARGETLIBS= [text] 410
TARGETNAME= [text] 410
TARGETPATH= [text] 410, 414
TARGETTYPE= [text] 410
Taxonomy
I/O [text] 209
TDI [text] 109
illustrated [text] 110
Terminal Server [text] 24
Termination handler
__finally [text] 1260, 1265-1269
test.exe [lab] 33
CreateFile [lab] 58
Lab2 [lab] 57, 69
sample output [lab] 36, 37
Thread
defined [text] 25, 36
design guidelines [text] 1026-1028
driver [text] 990, 991, 996-998
IoAllocateWorkItem [text] 994, 995
IoFreeWorkItem [text] 994, 995
IoQueueWorkItem [text] 994, 995
kernel [text] 25
KeSetBasePriorityThread [text] 996, 997, 1001
KeSetPriorityThread [text] 996, 997, 1000
latency [text] 1028
multithreaded [text] 25
mutex
owned [text] 1010
performance [text] 1028
PKSTART_ROUTINE [text] 998
priority [text] 30
private state [text] 37
PsCreateSystemThread [text] 996-998
PsTerminateSystemThread [text] 996, 997, 999
scheduling [text] 25
shared state [text] 36
system worker [text] 991, 994, 995
Thunking [text] 1338
32-bit [text] 1333, 1334
64-bit [text] 1333-1335, 1339, 1340
Time
KeQuerySystemTime [text] 949
KeQueryTickCount [text] 949
KeQueryTimeIncrement [text] 949
timeout=
BOOT.INI [text] 437
Timer
10ms [text] 937
15ms [text] 937
custom [text] 934-936, 939
DPC [text] 173, 174, 928-938
high-resolution [text] 944
IO_TIMER_ROUTINE [text] 931
IoInitializeTimer [text] 929, 930
IoStartTimer [text] 931, 932
IoStopTimer [text] 932, 933
IoTimer [text] 929-931
Lab4 [lab] 77-79
KeCancelTimer [text] 935
KeIniializeTimer
Lab4 [lab] 80
KeInitializeTimer [text] 935, 940, 941
KeInitializeTimerEx [text] 935, 942
KeQueryPerformanceCounter [text] 945-948
KeQUeryTimeIncrement [text] 949
KeReadStateTimer [text] 935
KeSetTimer [text] 935, 943
Lab4 [lab] 80
KeSetTimerEx [text] 935, 943
KeStallExecutionProcessor [text] 924
KTIMER [text] 940
Lab4 [lab] 77, 80
Lab4 [lab] 77-80
log delay [text] 950
object [text] 173, 174
PIO_TIMER_ROUTINE [text] 930
precision [text] 951
resolution [text] 936, 937
types [text] 923
unreleased [text] 490
Timeslice [text] 31, 88
To [text] 1185
Toggle breakpoint [lab] 21
Top-level driver [text] 99, 130-1149
Trace
ASSERT [text] 384, 385
ASSERTMSG [text] 384, 385
DbgPrint [text] 374
DbgPrintEx [text] 375
KdPrint [text] 374
KdPrintEx [text] 375
WPP [text] 525
TransactNamedPipe [text] 79
Transport Driver Interface [text] 109
illustrated [text] 110
TRUE [text] 1184
Type
HKLM\...\Services\drivername [text] 452
IO_STACK_LOCATION.Parameters.Power [text] 1168
Registry [text] 455
Type3InputBuffer [text] 672
IO_STACK_LOCATION.Parameters.DeviceIoControl [text] 695
TypesSupported
HKLM\...\EventLog\System\drivername [text] 1045
UHALF_PTR [text] 1328
UHCI
USB [text] 1362
UINT32 [text] 1327
UINT64 [text] 1327
UINT_PTR [text] 1328
UIntToPtr [text] 1330, 1331
ULONG32 [text] 1327
ULONG64 [text] 1327
ULONG_PTR [text] 1328
ULongToPtr [text] 1330, 1331
UNALIGNED [text] 1325
UND
output [lab] 66
Underrun
memory [text] 491
Unicode [text] 324
RtlInitUnicodeString [text] 325
UNICODE_STRING [text] 325
UNICODE_STRING
example [text] 326, 395
FILE_OBJECT.FileName [text] 567
illustrated [text] 325
RtlInitUnicodeString [text] 325
example [text] 328, 330-334
Uniprocessor
/onecpu [text] 446
HAL [text] 242
Unload [text] 173, 174, 308
DRIVER_OBJECT
.DriverUnload [text] 332
example [text] 327, 334
guiidelines [text] 333
Plug-and-Play [text] 335
Unload handler [text] 319, 321-402
Lab2 [lab] 70
Plug-and-Play [text] 1231
Unplug
USB [text] 1361
URB [text] 1389, 1391
.UrbBulkOrInterruptTransfer [text] 1395
.UrbControlDescriptorRequest [text] 1395
.UrbControlFeatureRequest [text] 1396
.UrbControlGetConfigurationRequet [text] 1396
.UrbControlGetInterfaceRequest [text] 1396
.UrbControlGetStatusRequest [text] 1395
.UrbControlTransfer [text] 1391, 1395
.UrbControlVendorClassRequest [text] 1396
.UrbFrameLengthControl [text] 1391, 1394
.UrbGetCurrentFrameNumber [text] 1394
.UrbGetFrameLength [text] 1391, 1394
.UrbHeader [text] 1391, 1393-1397
.Function [text] 1397, 1398, 1439, 1440
.Length [text] 1397, 1398, 1439
.Status [text] 1397, 1398, 1440
.UrbIsochronousTransfer [text] 1395
.UrbPipeRequest [text] 1391, 1393
.UrbSelectConfiguration [text] 1391, 1393
.UrbSelectInterface [text] 1391, 1393
.UrbSetFrameLength [text] 1391, 1394
_URB_BULK_OR_INTERRUPT_TRANSFER [text] 1408
_URB_CONTROL_DESCRIPTOR_REQUEST [text] 1392, 1413-1445
_URB_CONTROL_FEATURE_REQUEST [text] 1392, 1417-1424
_URB_CONTROL_GET_CONFIGURATION_REQUEST [text] 1392, 1437
_URB_CONTROL_GET_INTERFACE_REQUEST [text] 1392, 1438
_URB_CONTROL_GET_STATUS_REQUEST [text] 1392, 1425-1428
_URB_CONTROL_TRANSFER [text] 1407
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1392, 1429-1436
_URB_FRAME_LENGTH_CONTROL [text] 1402, 1403
_URB_GET_CURRENT_FRAME_NUMBER [text] 1406
_URB_GET_FRAME_LENGTH [text] 1404
_URB_ISOCH_TRANSFER [text] 1392, 1409
_URB_PIPE_REQUEST [text] 1401, 1410-1412
_URB_SELECT_CONFIGURATION [text] 1399
_URB_SELECT_INTERFACE [text] 1400
_URB_SET_FRAME_LENGTH [text] 1405
defined [text] 1392
IOCTL_INTERNAL_USB_SUBMIT_URB [text] 1439, 1440, 1443
URB_FUNCTION_ABORT_PIPE [text] 1401
URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER [text] 1408
URB_FUNCTION_CLASS_DEVICE [text] 1433
URB_FUNCTION_CLASS_ENDPOINT [text] 1435
URB_FUNCTION_CLASS_INTERFACE [text] 1434
URB_FUNCTION_CLASS_OTHER [text] 1436
URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE [text] 1418, 1421
URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT [text] 1423
URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE [text] 1422
URB_FUNCTION_CLEAR_FEATURE_TO_OTHER [text] 1424
URB_FUNCTION_CONTROL_TRANSFER [text] 1407
URB_FUNCTION_GET_CONFIGURATION [text] 1437
URB_FUNCTION_GET_CURRENT_FRAME_NUMBER [text] 1406
URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE [text] 1413
URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT [text] 1414
URB_FUNCTION_GET_FRAME_LENGTH [text] 1404
URB_FUNCTION_GET_INTERFACE [text] 1438
URB_FUNCTION_GET_STATUS_FROM_DEVICE [text] 1425
URB_FUNCTION_GET_STATUS_FROM_ENDPOINT [text] 1427
URB_FUNCTION_GET_STATUS_FROM_INTERFACE [text] 1426
URB_FUNCTION_GET_STATUS_FROM_OTHER [text] 1428
URB_FUNCTION_ISOCH_TRANSFER [text] 1409
URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL [text] 1403
URB_FUNCTION_RESET_PIPE [text] 1410
URB_FUNCTION_SELECT_CONFIGURATION [text] 1399
URB_FUNCTION_SELECT_INTERFACE [text] 1400
URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE [text] 1415
URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT [text] 1416
URB_FUNCTION_SET_FEATURE_TO_DEVICE [text] 1417
URB_FUNCTION_SET_FEATURE_TO_ENDPOINT [text] 1419
URB_FUNCTION_SET_FEATURE_TO_OTHER [text] 1420
URB_FUNCTION_SET_FRAME_LENGTH [text] 1405
URB_FUNCTION_SYNC_CLEAR_STALL [text] 1412
URB_FUNCTION_SYNC_RESET_PIPE [text] 1411
URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL [text] 1402
URB_FUNCTION_VENDOR_DEVICE [text] 1429
URB_FUNCTION_VENDOR_ENDPOINT [text] 1431
URB_FUNCTION_VENDOR_INTERFACE [text] 1430
URB_FUNCTION_VENDOR_OTHER [text] 1432
UrbBulkOrInterruptTransfer [text] 1391
UrbGetCurrentFrameNumber [text] 1391
USB_CONFIGURATION_DESCRIPTOR_TYPE [text] 1445
UsbBuildInterruptOrBulkTransfer [text] 1447
URB_FUNCTION_ABORT_PIPE [text] 1401
URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER [text] 1408
URB_FUNCTION_CLASS_DEVICE [text] 1433
URB_FUNCTION_CLASS_ENDPOINT [text] 1435
URB_FUNCTION_CLASS_INTERFACE [text] 1434
URB_FUNCTION_CLASS_OTHER [text] 1436
URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE [text] 1418, 1421
URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT [text] 1423
URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE [text] 1422
URB_FUNCTION_CLEAR_FEATURE_TO_OTHER [text] 1424
URB_FUNCTION_CONTROL_TRANSFER [text] 1407
URB_FUNCTION_GET_CONFIGURATION [text] 1437
URB_FUNCTION_GET_CURRENT_FRAME_NUMBER [text] 1406
URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE [text] 1413
URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT [text] 1414
URB_FUNCTION_GET_FRAME_LENGTH [text] 1404
URB_FUNCTION_GET_INTERFACE [text] 1438
URB_FUNCTION_GET_STATUS_FROM_DEVICE [text] 1425
URB_FUNCTION_GET_STATUS_FROM_ENDPOINT [text] 1427
URB_FUNCTION_GET_STATUS_FROM_INTERFACE [text] 1426
URB_FUNCTION_GET_STATUS_FROM_OTHER [text] 1428
URB_FUNCTION_ISOCH_TRANSFER [text] 1409
URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL [text] 1403
URB_FUNCTION_RESET_PIPE [text] 1410
URB_FUNCTION_SELECT_CONFIGURATION [text] 1399
URB_FUNCTION_SELECT_INTERFACE [text] 1400
URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE [text] 1415
URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT [text] 1416
URB_FUNCTION_SET_FEATURE_TO_DEVICE [text] 1417
URB_FUNCTION_SET_FEATURE_TO_ENDPOINT [text] 1419
URB_FUNCTION_SET_FEATURE_TO_OTHER [text] 1420
URB_FUNCTION_SET_FRAME_LENGTH [text] 1405
URB_FUNCTION_SYNC_CLEAR_STALL [text] 1412
URB_FUNCTION_SYNC_RESET_PIPE [text] 1411
URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL [text] 1402
URB_FUNCTION_VENDOR_DEVICE [text] 1429
URB_FUNCTION_VENDOR_ENDPOINT [text] 1431
URB_FUNCTION_VENDOR_INTERFACE [text] 1430
URB_FUNCTION_VENDOR_OTHER [text] 1432
UrbHeader [text] 1391
USB
_URB_BULK_OR_INTERRUPT_TRANSFER [text] 1408
_URB_CONTROL_DESCRIPTOR_REQUEST [text] 1413-1416
_URB_CONTROL_FEATURE_REQUEST [text] 1417-1424
_URB_CONTROL_GET_CONFIGURATION_REQUEST [text] 1437
_URB_CONTROL_GET_INTERFACE_REQUEST [text] 1438
_URB_CONTROL_GET_STATUS_REQUEST [text] 1425-1428
_URB_CONTROL_TRANSFER [text] 1407
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1429-1436
_URB_FRAME_LENGTH_CONTROL [text] 1402, 1403
_URB_GET_CURRENT_FRAME_NUMBER [text] 1406
_URB_GET_FRAME_LENGTH [text] 1404
_URB_ISOCH_TRANSFER [text] 1409
_URB_PIPE_REQUEST [text] 1401, 1410-1412
_URB_SELECT_CONFIGURATION [text] 1399
_URB_SELECT_INTERFACE [text] 1400
_URB_SET_FRAME_LENGTH [text] 1405
1.1 [text] 1350
2.0 [text] 1349, 1351
bulk transfer [text] 1352, 1355
BulkUsb driver [text] 1448, 1449
bus analyzer [text] 961, 962
cable length [text] 1383, 1384
CallUSBD [text] 1441, 1442
compared to Firewire [text] 1386
components [text] 1350
configuration [text] 1363
_URB_CONTROL_GET_CONFIGURATION_REQUEST [text] 1437
_URB_SELECT_CONFIGURATION [text] 1399
HID [text] 1462
HID*PHRASE=HID
configuration [text] 1464
URB_FUNCTION_GET_CONFIGURATION [text] 1437
URB_FUNCTION_SELECT_CONFIGURATION [text] 1399
USBD_CreateConfigurationRequestEx [text] 1446
control transfer [text] 1352, 1353
_URB_CONTROL_TRANSFER [text] 1407
URB_FUNCTION_CONTROL_TRANSFER [text] 1407
Debugging [text] 973
debugging port [text] 485
descriptor [text] 1363-1380
_URB_CONTROL_DESCRIPTOR_REQUEST [text] 1413-1416
HID [text] 1462
string [text] 1468
URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE [text] 1413
URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT [text] 1414
URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE [text] 1415
URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT [text] 1416
UsbBuildGetDescriptorRequest [text] 1445, 1446
USBD_ParseConfigurationDescriptorEx [text] 1446
device
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1429, 1433
URB_FUNCTION_CLASS_DEVICE [text] 1433
URB_FUNCTION_VENDOR_DEVICE [text] 1429
driver [text] 98, 1381
driver size [text] 1448-1450
driver stack [text] 1362
endpoint [text] 1357
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1435
HID [text] 1466, 1467
URB_FUNCTION_CLASS_ENDPOINT [text] 1435
URB_FUNCTION_VENDOR_ENDPOINT [text] 1431
enumeration [text] 1359-1361
feature
_URB_CONTROL_FEATURE_REQUEST [text] 1417-1424
URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE [text] 1418, 1421
URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT [text] 1423
URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE [text] 1422
URB_FUNCTION_CLEAR_FEATURE_TO_OTHER [text] 1424
URB_FUNCTION_SET_FEATURE_TO_DEVICE [text] 1417
URB_FUNCTION_SET_FEATURE_TO_ENDPOINT [text] 1419
URB_FUNCTION_SET_FEATURE_TO_OTHER [text] 1420
frame
_URB_FRAME_LENGTH_CONTROL [text] 1402, 1403
_URB_GET_CURRENT_FRAME_NUMBER [text] 1406
_URB_GET_FRAME_LENGTH [text] 1404
_URB_SET_FRAME_LENGTH [text] 1405
URB_FUNCTION_GET_CURRENT_FRAME_NUMBER [text] 1406
URB_FUNCTION_GET_FRAME_LENGTH [text] 1404
URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL [text] 1403
URB_FUNCTION_SET_FRAME_LENGTH [text] 1405
URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL [text] 1402
full speed [text] 1349, 1351-1454
function
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1436
URB_FUNCTION_CLASS_OTHER [text] 1436
HID [text] 1453, 1484
high speed [text] 1349, 1351-1454
hub [text] 1348
hub controller [text] 1350
hub enumeration [text] 1360, 1361
hub repeater [text] 1350
interface [text] 1465
_URB_CONTROL_GET_INTERFACE_REQUEST [text] 1438
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1430, 1431, 1434
_URB_SELECT_INTERFACE [text] 1400
URB_FUNCTION_CLASS_INTERFACE [text] 1434
URB_FUNCTION_GET_INTERFACE [text] 1438
URB_FUNCTION_SELECT_INTERFACE [text] 1400
URB_FUNCTION_VENDOR_INTERFACE [text] 1430
interrupt transfer [text] 1352, 1354
IOCTL_INTERNAL_USB_SUBMIT_URB [text] 1439, 1440
IoSetDeviceInterfaceState [text] 1446
IRP_MJ_READ [text] 1447
IRP_MJ_WRITE [text] 1447
IRP_MN_START_DEVICE [text] 1446
isochronous
_URB_ISOCH_TRANSFER [text] 1409
URB_FUNCTION_ISOCH_TRANSFER [text] 1409
isochronous transfer [text] 1352, 1356
low speed [text] 1349, 1351-1454
model [text] 1348
OHCI [text] 1362
partial MDL [text] 822
pipe [text] 1358
_URB_BULK_OR_INTERRUPT_TRANSFER [text] 1408
_URB_PIPE_REQUEST [text] 1401, 1410-1412
URB_FUNCTION_ABORT_PIPE [text] 1401
URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER [text] 1408
URB_FUNCTION_RESET_PIPE [text] 1410
URB_FUNCTION_SYNC_CLEAR_STALL [text] 1412
URB_FUNCTION_SYNC_RESET_PIPE [text] 1411
Plug-and-Play [text] 1382
root hub [text] 1350, 1351
status
_URB_CONTROL_GET_STATUS_REQUEST [text] 1425-1428
URB_FUNCTION_GET_STATUS_FROM_DEVICE [text] 1425
URB_FUNCTION_GET_STATUS_FROM_ENDPOINT [text] 1427
URB_FUNCTION_GET_STATUS_FROM_INTERFACE [text] 1426
URB_FUNCTION_GET_STATUS_FROM_OTHER [text] 1428
topology [text] 1351
UHCI [text] 1362
URB_FUNCTION_ABORT_PIPE [text] 1401
URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER [text] 1408
URB_FUNCTION_CLASS_DEVICE [text] 1433
URB_FUNCTION_CLASS_ENDPOINT [text] 1435
URB_FUNCTION_CLASS_INTERFACE [text] 1434
URB_FUNCTION_CLASS_OTHER [text] 1436
URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE [text] 1418, 1421
URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT [text] 1423
URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE [text] 1422
URB_FUNCTION_CLEAR_FEATURE_TO_OTHER [text] 1424
URB_FUNCTION_CONTROL_TRANSFER [text] 1407
URB_FUNCTION_GET_CONFIGURATION [text] 1437
URB_FUNCTION_GET_CURRENT_FRAME_NUMBER [text] 1406
URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE [text] 1413
URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT [text] 1414
URB_FUNCTION_GET_FRAME_LENGTH [text] 1404
URB_FUNCTION_GET_INTERFACE [text] 1438
URB_FUNCTION_GET_STATUS_FROM_DEVICE [text] 1425
URB_FUNCTION_GET_STATUS_FROM_ENDPOINT [text] 1427
URB_FUNCTION_GET_STATUS_FROM_INTERFACE [text] 1426
URB_FUNCTION_GET_STATUS_FROM_OTHER [text] 1428
URB_FUNCTION_ISOCH_TRANSFER [text] 1409
URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL [text] 1403
URB_FUNCTION_RESET_PIPE [text] 1410
URB_FUNCTION_SELECT_CONFIGURATION [text] 1399
URB_FUNCTION_SELECT_INTERFACE [text] 1400
URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE [text] 1415
URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT [text] 1416
URB_FUNCTION_SET_FEATURE_TO_DEVICE [text] 1417
URB_FUNCTION_SET_FEATURE_TO_ENDPOINT [text] 1419
URB_FUNCTION_SET_FEATURE_TO_OTHER [text] 1420
URB_FUNCTION_SET_FRAME_LENGTH [text] 1405
URB_FUNCTION_SYNC_CLEAR_STALL [text] 1412
URB_FUNCTION_SYNC_RESET_PIPE [text] 1411
URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL [text] 1402
URB_FUNCTION_VENDOR_DEVICE [text] 1429
URB_FUNCTION_VENDOR_ENDPOINT [text] 1431
URB_FUNCTION_VENDOR_INTERFACE [text] 1430
URB_FUNCTION_VENDOR_OTHER [text] 1432
USB-to-USB [text] 1385
USB_CONFIGURATION_DESCRIPTOR [text] 1445
USB_CONFIGURATION_DESCRIPTOR_TYPE [text] 1445
UsbBuildGetDescriptorRequest [text] 1446
USBD [text] 1444
vendor
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1432
URB_FUNCTION_VENDOR_OTHER [text] 1432
WDM [text] 1147
USB Request Block
see URB [text] 1389, 1391, 1392
USB_CONFIGURATION_DESCRIPTOR [text] 1445
USB_CONFIGURATION_DESCRIPTOR_TYPE [text] 1445
UsbBuildGetDescriptorRequest [text] 1445, 1446
UsbBuildInterruptOrBulkTransferRequest [text] 1447
USBD
CallUSBD [text] 1441, 1445
defiend [text] 1442
illustrated [text] 1136
IoCallDriver [text] 1447
IOCTL_INTERNAL_USB_SUBMIT_URB [text] 1443
USBD_CreateConfigurationRequestEx [text] 1446
USBD_ParseConfigurationDescriptorEx [text] 1446
USBD_CreateConfigurationRequestEx [text] 1446
USBD_ParseConfigurationDescriptorEx [text] 1446
USBD_TRANSFER_DIRECTION_IN [text] 1447
USBD_TRANSFER_DIRECTION_OUT [text] 1447
User
mode [text] 154
User space
accessing [text] 630
UserBuffer [text] 634, 635
IRP [text] 685, 686
Neither I/O [text] 671, 673
Vendor
_URB_CONTROL_VENDOR_OR_CLASS_REQUEST [text] 1392, 1432
URB_FUNCTION_VENDOR_OTHER [text] 1432
VendorID
HID [text] 1463
PCI_COMMON_CONFIG [text] 1596, 1600
Verifier
call usage [text] 515-518
create settings [text] 500
deadlock detection [text] 498
disabling [text] 505
DMA verification [text] 496
Forcing IRQL checking [text] 492
I/O verification [text] 495
low resource simulation [text] 493
memory pool tracking [text] 494
reboot [text] 504
SCSI verification [text] 499
selection [text] 502, 503
settings [text] 501
Version
DEVICE_DESCRIPTION [text] 854
VERSIONINFO [text] 983
VERSIONINFO [text] 980-984, 987
ProductVersion [text] 985
StringFileInfo
CompanyName [text] 984
FileDescription [text] 984
FileVersion [text] 984
InternalName [text] 984
LegalCopyright [text] 984
LegalTrademarks [text] 985
OriginalFileName [text] 985
ProductName [text] 985
VFT_DRV [text] 983
VGA
illustrated [text] 120
Video port
XP [text] 1321
Virtual address [text] 165
Virtual memory [text] 23, 32-164
drivers [text] 166, 167
kernel (other) [text] 163
kernel map [text] 155-158, 160, 161
illustrated [text] 159, 162
on-card [text] 168
Win32 [text] 156
Virtual memory map
illustrated [text] 803-809
VirtualAlloc [text] 1264
Viscarola, Peter [text] 1624
Vista
asymmetric multiprocessor [text] 27
asymmetric multiprocessors [text] 18
BOOT.INI (gone!) [text] 431
CancelIoEx [text] 338
CancelSynchronousIo [text] 338
driver verifier [text] 504
HAL [text] 243
message-based interrupts [text] 205
NUMA [text] 198, 199
PoCallDriver [text] 1211
Registry [text] 1046
Visual studio
not used [text] 408
volatile [text] 624-626
example [text] 290
VOS_NT_WINDOWS32 [text] 983
VS_VERSION_INFO [text] 983
Wait-wake
GUID_POWER_DEVICE_WAKE_ENABLE [text] 1522
Waitable object
event [text] 1011
executive resource (not!) [text] 1016
fast mutex (not!) [text] 1013
mutex [text] 1009
semaphore [text] 1007
WaitCommEvent [text] 79
WaitForMultipleObjectsEx [text] 57, 73
WaitForSingleObjectEx [text] 57, 73
Warning
EVENTLOG_WARNING_TYPE [text] 1045
warning
#pragma [text] 420, 421
WCHAR [text] 324
WDF [text] 8
WDM [text] 129
Firewire [text] 1147
illustrated [text] 1144
PCI [text] 1147
Programming the Windows Driver Model [text] 1624
subset [text] 1145, 1148-1155
USB [text] 1147
Win2K [text] 1184, 1185
Win32 Programming [text] 3, 1624
Win98
WDM [text] 1145
Win9x
illustrated [text] 1144
WinDbg [text] 460
!analyze –v [lab] 21, [text] 469
!dma [text] 497
-k [lab] 5
.reboot [text] 464
.reload [lab] 21
_NT_DEBUG_PORT [lab] 10, 11
_NT_KD_FILES [lab] 10, 11
_NT_SYMBOL_PATH [lab] 10, 11
break [lab] 15
crash dump analysis [text] 473
debugging model [lab] 20
documentation [lab] 25
downloading driver [lab] 8, 9
_NT_KD_FILES [lab] 10, 11
environment variables [lab] 6, 7, 10-14
F5 [lab] 15, 21
F8 [lab] 21
gflags [text] 538, 539
Go [text] 459, 462
go [lab] 15
illustrated [text] 432
local debuggin [text] 383
register dump [text] 476
running [lab] 32
shortcut [lab] 4, 5
stack backtrace [text] 477
trace output [lab] 37
Windows
Data Center Edition
limitations [text] 26
Windows Management Instrumentation
see WMI [text] 1512
Windows NT Driver Development [text] 1624
Windows NT File System Internals [text] 1624
Windows NT/2000 Native API Reference [text] 1624
Windows PreProcessor Trace
see WPP [text] 525
WinLogon [text] 24
Winqual [text] 534
WinSock
driver
illustrated [text] 110
WMD
CardBus [text] 1147
WMI [text] 1512
data [text] 1517, 1520-1524
event block [text] 1518
events [text] 1523
generic property page provider [text] 1522
GUID [text] 1519
illustrated [text] 1513
instance [text] 1519
IRP_MJ_SYSTEM_CONTROL [text] 65, 338-1514
IRP_MN_QUERY_ALL_DATA [text] 1520
IRP_MN_QUERY_SINGLE_INSTANCE [text] 1520
MOF compiler
illustrated [text] 1521
register provider [text] 1523
WPP [text] 525, 527, 528
WnDbg
debugger [text] 433
WORD
FILE_WORD_ALIGNMENT [text] 343
Work item
IO_WORK_ITEM [text] 995
IoAllocateWorkItem [text] 994, 995
IoFreeWorkItem [text] 994, 995
IoQueueWorkItem [text] 994, 995
PIO_WORKITEM [text] 995
PIO_WORKITEM_ROUTINE [text] 995
WORK_QUEUE_TYPE [text] 995
Workstation
limitations [text] 26
WPP [text] 526
DebugPrint [text] 526
GUID [text] 527
WMI [text] 528
Write
IO_STACK_LOCATION
.Parameters [text] 694
ordering [text] 301-303
Write buffer [text] 297-303
Write-back cache [text] 222, 231
Write-through cache [text] 222, 231
WRITE_REGISTER_BUFFER_UCHAR [text] 248, 248, 249
WRITE_REGISTER_BUFFER_ULONG [text] 248, 248, 249
WRITE_REGISTER_BUFFER_USHORT [text] 248, 248, 249
WRITE_REGISTER_UCHAR [text] 247, 247-293
using [lab] 42, [text] 251, 251, 252
WRITE_REGISTER_ULONG [text] 247, 247-294
illustrated [text] 295-298
using [text] 251, 251, 252
WRITE_REGISTER_USHORT [text] 247, 247-293
using [text] 251, 251, 252
WriteFile [text] 48, 60-67
buffered [text] 635, 643, 644
illustrated [text] 645-648
design [text] 550
direct [text] 658
Direct I/O [text] 661-663
illustrated [text] 664-669
handler [text] 322
I/O Completion Port [text] 79
IO_STACK_LOCATION
.Parameters
.Write [text] 694
IRP_MJ_WRITE [text] 65, 338
WriteFileEx [text] 48, 57-72
buffered [text] 635, 643, 644
illustrated [text] 645-648
direct [text] 658
Direct I/O [text] 661-663
illustrated [text] 664-669
handler [text] 322
IRP_MJ_WRITE [text] 65, 338
www.bullseye.com [text] 521
www.chsw.com [text] 1627
www.eclectic-eng.com [text] 2
www.flounder.com [text] 1627
mvp_tips.htm [text] 2
www.lvr.com [text] 1627
www.microsoft.com/
DDK/Debugging/default.asp [lab] 3
hwdev [text] 1627
hwtest [text] 1346
whdc/default.mspx [text] 8
whdc/maintain/StartWER.mspx [text] 536
whdc/maintain/WER/DebugOCA.mspx [text] 536
www.osr.com [text] 1627
www.pcausa.com [text] 1627
www.sysinternals.com [text] 1627
www.tssc.de/index.htm [text] 1504
www.usb.org/developers [text] 1627
www.winInternals.com [text] 1627
www.yourvote.com/pci [text] 1627
x86
instruction set [text] 261
x86 architecture [text] 187-189
xadd [text] 288, 289
lock [text] 287-289
xchg
lock [text] 287
xor
lock [text] 287
XP
features [text] 1319
Zero-page thread [text] 87
priority [text] 177, 178
ZF [text] 274-276
InterlockedCompareExchange [text] 290
Zw… [text] 176